一道C语言指针问题

#include <stdio.h>
float max(float a,float b)
{
if(a>b)
return a;
else
return b;
}
main()
{
float max(float a,float b);
float (*p)();
float x,y,z;
p=max;
scanf("%f%f",&x,&y);
z=(*p)(x,y);
printf("%f\n",z);
}
为什么输出值总是0???

第1个回答  2011-12-15
你这能编译过吗? (*p)() ;后面的形参列表表示指针变量指向的函数所带的参数列表

修改为
float (*p)(float,float);
试试
第2个回答  2011-12-16
#include <stdio.h>
float max(float a,float b)
{
if(a>b)
return a;
else
return b;
}
main()
{
float max(float a,float b);
float (*p)(float,float);
float x,y,z;
p=max;
printf("input x,y:\n");
scanf("%f%f",&x,&y);
z=(*p)(x,y);
printf("%f\n",z);
}本回答被提问者和网友采纳

一个C语言指针问题。求大佬解答?
在这个程序中,我们首先提示用户输入方阵的尺寸,然后输入方阵的元素。接着,我们通过遍历方阵的每一行,并使用指针指向每行对应列的元素,来求出方阵对角线元素之和。最后,我们输出结果。程序的输出示例如下:include <stdio.h> int main(){ \/\/ 方阵的尺寸 int n;printf("Enter the size of the m...

C语言指针的一个问题
(1) 第一个框里的代码 short* temp = *p1; 等价于下面的两条语句:short* temp;temp = *p1;所以,后面 p2=temp;和上面是一致的, 没错.(2)第二个框里的代码 没错, 指针就一个该指向指针, 但是你这里赋值一个值.这种做法是错误的, 不过对C语言来说, "错的"的意思是"不能保证正确", ...

问一道C语言指针题目 为什么p q地址交换以后mn的值不会交换?
m,n 的值没有交换。自然数值不变。指针指向地址交换,p 原指向 m, 现指向 n, q 原指向 n, 现指向 m, 所以变了。就如,m,n 是 甲,乙2人。p,q 是 镜子,p 原照着 m, q 原照着 n,现在 p 改照 n, q 改照 m.p,q 里的 影子变了,甲,乙2人 没变。

c语言,指针指向另一个指针的问题,为什么报错?
图中红色框内代码有误,*(p+5)不是表示指针而是值。应改为 q = p+5 另外补充说明,改成这样虽然没有语法错误,但是很明显p+5已经超过数组a的内存空间,需要注意。

c语言问题,关于指针的问题
一、比如我们定义一个int型指针变量。int *p=NULL;初值为空。那么当执行while(p);时,只有p==NULL时,while循环才会结束。所以如果我们写while(p);printf。。。;那么只有当p为空时,后面的printf才会执行。否则就一直循环,这样我们就能判断p为空了。同理!p,自然就能判断p不为空了。二、p...

请教各位,这道c语言指针题该怎么理解
str+1指向字符B所对应的地址,指针str+1所指向的字符串BCDEFG 指针p2+1所指向的字符串fgh strcpy(str+1,p2+1) str[50]="Afgh"即把BCDEFG换成fgh 指针str+3所指向的字符串Afgh中h所对应的的地址 指针p1+3所指向的字符串abcd中d所对应的的地址 strcpy(str+3,p1+3) str[50]="Afgd"

c语言选择题(指针)
答案是A,首先定义p是一个指向int类型的指针,不过这个指针没有初始化,也就是没有指向。然后定义了一个int类型的变量i,这里千万不要认为i也是个指针,如果i跟p一样,要在前面也加个*号。然后分析答案: A,这里对p指向的变量进行赋值,这里是相当于初始化了。所以正确。B,不正确\/不合理,因为p的...

c语言中指针计算的问题
问题一:2010H是内存地址的表示形式。内容中的地址都是以十六进制表示的。H表示这是个十六进制数。问题二:2010H-2000H=10H。这是个十六进制数。一个字节用一个地址表示。10H转换成十进制数就是16。这就表示2010H和2000H这两个地址之间相差16个字节。因为浮点数组,每个元素占4个字节,16\/4=4。

C语言字符指针问题
printf("%c", *p); \/\/ 结果是hprintf("%c" , *(p+1)) \/\/ 结果是e最后是函数引用问题。这里是否能引用p,是需要看你的函数是怎么写的。比如说你说strcmp。他的原型为 extern int strcmp(const char *s1,const char *s2);他两个参数均为指针,当然可以直接使用p这个指针作为参数 ...

C语言指针问题
1、ptr赋值为arr地址后指向第一个元素,即元素6.2、*(ptr++) += 123;由于是右侧操作(递增后缀),所以先取ptr地址后再递增ptr,此时取得的地址还是第一个元素地址(递增后ptr指向第二个元素,也就是7,这是第一次递增),因此是对6+123=129,并保存原地址,即第一个元素地址,因此6被改为129...

相似回答
大家正在搜