1.有这么个函数:void fun(int n,char *s) {…}
下面对函数指针的定义和赋值均正确的是(A):
void (*pf)();
pf=fun;
为啥函数指针pf实参表不带类型啊→void (*pf)(int,char*)
难道是void类型的原因!
é¦å
éæä¸ä¸ï¼ ä¹åå·®ç¹è¯¯å¯¼ä½ ï¼ è¿å 天æäºä¹æ²¡çåå¤ã
ä¹åçåå¤æ误ï¼è¿ä¸ªç¹æ温æ äºä¸ä¸æéçç¥è¯ï¼æ¥éæ°æ´æ°ä¸ä¸çæ¡ã
çç¡®çåæ³ï¼
é误çåæ³ï¼
æä¸å¯ç¥ï¼
1ãå®ä¹ævoid(*pf)()æ¯ä¸è½æ¥æ¶fun(int, char*)ç, å¿ é¡»è¦æç¸åçåæ°ã
2ãè¿åå¼å®ä¹ævoidç±»åæ¯å¯ä»¥çï¼voidæ¯ä»»æç±»åï¼å¯æ ¹æ®å®é æ åµèååã
以ä¸æ¯æ对è¿ä¸ªé¢ç®çç解ï¼å¦æå¯¹ä½ æ帮å©ï¼éé纳ä¸ä¸ï¼è°¢è°¢ã
追é®â¦â¦é¦å
æè°¢ä½ çåçï¼æäºå¥½å¤ã
ç¶åæ说çæ¯å®ä¹çé®é¢â¦ä¸æ¯è°ç¨çé®é¢â¦â¦
ç¶åä¸é¢æ¯æçç解
è¿éå½æ°æépfçå®ä¹ä¸å½¢å表å没æ带任ä½åæ°ç±»åï¼æ¢pfåªè½è°ç¨æ åå½æ°ï¼èfunæ两个åï¼å¦æä½ è°ç¨pfçæ¶åå¨å®å表æäºå®åæ¯æ æ³ä¼ ç»funçã
æ以æ¯æç解éäºï¼è¿æ¯çæ¡éäºï¼
那fun定义了两个参,调用的时候不是要带两参吗,pf定义的时候都没带参数,用pf调用函数怎么传参数?
追答pf指向fun,你就按fun传参数。
追问形参表为空怎么传实参,请用代码蹂躏我
C语言,函数指针定义中实参表为空的问题。
1、定义成void(*pf)()是不能接收fun(int, char*)的, 必须要有相同的参数。2、返回值定义成void类型是可以的,void是任意类型,可根据实际情况而变化。以上是我对这个题目的理解,如果对你有帮助,青采纳一下,谢谢。
求教C语言指针作为实参取不到值的问题
在一个函数内所分配的空间是静态的当这个函数执行完后这个函数的空间就没有了!所以你在访问该空间就会出错!就如你上的int *inputTenNum(){ int a[10];\/\/这个是inputTenNum函数里面分配的 scanf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",&a[0],&a[1],&a[2],&a[3],&a[4],&a[5],...
c语言函数的形参与实参的问题?
首先要理解一点,数组在做参数传递的过程中会损失数组的长度信息,退化成一个指针 例如你形参写成(char s[10]),或者干脆(char s[]),函数只能接收到一个char 所以:char dp[n][m]的类型本质上是数组的指针,即char (*)[m],它是指向长度为m的char数组的指针 char **是char *的指针,指针...
c语言 关于空指针问题
1. if(y == NULL && w == NULL && d == NULL)这个语法上是对的,但是逻辑上不对,应该任何变量为空指针都不能执行,所以改为if(y == NULL || w == NULL || d == NULL)2. if...else... 的用法问题,else后并不是一定要再加if的。而且if后面一定要有条件。3. 循环只要是收敛...
C语言中函数定义的返回值为空的问题
改成这样就对了:void f(){ float a;printf("%f",a);\/\/你原来的输出格式不对 } void类型的函数无返回值,也就是说,不需要return语句 当然也可以在函数末尾加上一条空的return语句:return;(和return 1;是不同的)void f(float a){printf("%f",a);} 也是对的......
c语言中数组名为函数实参的问题?
代码在编译时会出现 error C2664: 'InsertSort' : cannot convert parameter 1 from 'int' to 'int []'这是因为用数组名做函数实参时,向形参(数组名或指针变量)传递的是数组首元素地址,因此对参数的类型做一下改变,如下图所示:
C语言问题有关于指针和实参形参
1.你对形参理解有误,可以大致认为形参是实参的赋值,int *a = &x;2.标准C认为函数需要有原型说明,当test在main前时,定义起到了原型说明的作用,放到 main后面,需要在main之前增加原型说明 void test(int *a);即:void test(int *a);main(){ int x=50;test(&x);printf("%d\\n",x);...
C语言中函数指针用法
int *fn_pointer ();的意思完全不同了。fn_pointer 将是一个函数名, 其返回值为 int 类型的指针。2:函数指针变量 在C语言中规定,一个函数总是占用一段连续的内存区, 而函数名就是该函数所占内存区的首地址。 我们可以把函数的这个首地址 ( 或称入口地址 ) 赋予一个指针变量, 使该...
C语言形参、实参指针的问题
p1即p1指向内容,即a起始地址指向内容,即a[0],即a的第1个元素,为1.1 (p2+1)即p2+1指向内容,即b[1]=20.0 变量s指向的空间内容=1.1+20.0=21.1 函数返回,fun自定义的参数变量s被释放 main函数中的变量s的值仍然等于a,*s=a[0]=1.1 这个程序有一个错误,printf中应写"%5.2...
c语言关于实参形参表示的方式的问题
1,形参前面加了void是空函数 意思是不要求返回值么?那这题不是把声明部分全部返还了么?增加void表示不用返回值,即在函数中要使用return时,不用带值。比如返回值为int型,那么要用类似return 0;,而本例直接return;即可。void inv(int x[ ],int n)中x,n都是传入参数,x是数组,所以函数内...