我想问的是怎样在定义一个函数的形式参数是,怎样把它的一个形参也设为一个函数。
譬如说定义一个函数void function(int x,visit())
{
……
}
function中的第一个形参是一个整形x舍,但是第二个形参是一种操作。
在主函数调用时 void main()
{
function(3,print());
function(4,delete());
……
}
赋给function不同的函数print()和delet()就完成了不同的操作舍。我想这在遍历这些操作中很有用舍。但是书上没有具体说怎么定义,那位能给我一个详细的定义方法解释吗?能举个例子就更好了。谢谢大家啊。
看了各位师兄解释基本上明白了。但是还有一个疑问,如果被调用的几个函数所需要的形参的个数不一样怎么办呢?譬如说改一下六楼师兄的程序
#include<stdio.h>
int max(int x,int y)/*需要两个形参*/
{
return(x>y?x:y);
}
int print( int m)/* 需要一个形参*/
{
printf("This one going to be shown is %d",m);
}
int func(int x,int y,int (*p)())
{
int result;
result=(*p)(x,y);/*赋给了两个参数,所以将max调进去的时候没问题,但是调入print怎么解决呢?*/
return(result);
}
void main()
{
int x,y,result;
printf("\nPlease input two integers a and b:\n");
scanf("%d%d",&x,&y);
printf("\nthe larger one is %d\n",func(x,y,max));
func(x,y,print);
}
我好像听老师说过可以用一个数组什么的来保证形参个数可变,但是具体怎么做呢?希望大家在给我解释一下哈,非常感谢啊
C语言中用函数做函数的形式参数的问题
表示定义一个指向函数的指针变量p,在c语言中这个格式是固定的,前面的()表示p先和*结合,是指针变量,后面的()表示p指向一个函数。前面的()不能省略,如果写成 p(),由于()优先级比*高,那就表示p()函数返回的是一个指针,p本身就是函数不是指针了,意思完全变了。任何一个函数,函数名就是该...
问个关于C语言中函数形式参数的问题
1)const使用的基本形式: const type m;限定m不可变。2)替换基本形式中的m为1式中的*p1,替换后const char *p1;限定*p1不可变,当然p1是可变的,因此问题中p1++是对的。3)替换基本形式中的type为2式中的pStr,替换后const pStr m;限定m不可变,题中的pStr就是一种新类型,因此问题中p2不...
c语言中数组名为函数实参的问题?
代码在编译时会出现 error C2664: 'InsertSort' : cannot convert parameter 1 from 'int' to 'int []'这是因为用数组名做函数实参时,向形参(数组名或指针变量)传递的是数组首元素地址,因此对参数的类型做一下改变,如下图所示:
简述C语言中函数的形式参数定义时的注意事项 求解...
1、形参个数不能太多,多了就用结构体指针吧;2、不需要携带数据返回的放在前面,需要携带数据返回类型的放在后面吧;3、不要直接传递结构体哦;4、一般地,指针类型最好加上const修饰,除非有特殊用途;5、尽量不要使用bool类型做为形式参数;6、别忘了给一个简洁好听的名字 ...
C语言中函数定义形参为数组时的问题
1.数组为参数传递的是数组首地址,而不是元素的值,而你说的a[size]仅仅是值,况且事实上也没有a[size]这个元素 2.既然是数组名的传递,当然需要由一个数组的参数来接收,int v[]”的问题是因为他是形式参数,是为了接收数组的 n的问题是因为,如果只传递了数组,但是函数并找不到数组的个数,所以需要...
c语言关于实参形参表示的方式的问题
1,形参前面加了void是空函数 意思是不要求返回值么?那这题不是把声明部分全部返还了么?增加void表示不用返回值,即在函数中要使用return时,不用带值。比如返回值为int型,那么要用类似return 0;,而本例直接return;即可。void inv(int x[ ],int n)中x,n都是传入参数,x是数组,所以函数内...
C语言函数的参数的问题
主函数也就是main函数 一般是没有参数的。函数可以分为两类,带参数和不带参数的,参数的作用就是值传递。一般都是在主函数中调用子函数,由实参传递给形参,形参:全称为“形式参数”是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传递的参数。 形参的作用是实现主调函数与被调...
C语言函数的调用函数名后面的形式参数表列可以是数字常量吗
函数名后面的形式参数表列不可以是常量!C语言中函数有三个概念:定义 声明 调用 函数定义:自定义一个函数,并完成相应的代码实现,如:int max( int a, int b ) \/\/小括号中的 a, b被称为形参,用来对应相应的实参,因为这里的形参可对应任意的实参值,所以,必须以变量形式体现。{ return ...
c语言函数调用时,实参和形参是如何传递的?什么时候要写指针型变量?求高...
函数调用时,实参值会自动传递给形参变量。指针比较复杂了。是变量的地址,如果参数类型是指针类型,则必须把实参变量的地址传递过去。当然在函数内也是间接引用实参变量的。比如 void f(int * p) \/\/形参是指针类型变量 下面是调用形式 f(&a); \/\/调用函数,实参是变量a的地址。
c语言中用函数做参数怎么用
} return 0;} 本程序中首先定义一个无返回值函数nzp,并说明其形参v为整型变量。在函数体中根据v值输出相应的结果。在main函数中用一个for语句输入数组各元素,每输入一个就以该元素作实参调用一次nzp函数,即把a[i]的值传送给形参v,供nzp函数使用。数组名作为函数参数 用数组名作函数参数与用...