指针的一道题,求教
#include<stdio.h>int main()
{
int min(int a);
int *p(int a);
int b={9,8,7,6,2,4,2,1,5};
int c;
p=min;
c=(*p)(b);
printf("%d\n",c);
return 0;
}
int min(int a)
{
int i;
int min=a,num=0;
for(i=1;i<9;i++)
{
if(min>a)
{
min=a;
num=i;
}
}
return num;
}
请问为什么运行不了?
好难。。小白不明觉厉为啥你要写的这么复杂? #include<stdio.h>
int main()
{
int min(int a[]);
int b={9,8,7,6,2,4,0,1,5};
int c;
c=min(b);
printf("%d\n",c);
return 0;
}
int min(int a[])
{
int i;
int min=a,num=0;
for(i=1;i<9;i++)
{
if(min>a)
{
min=a;
num=i;
}
}
return num;
}
maomingkun 发表于 2013-12-17 19:09 static/image/common/back.gif
#include
int main()
{
我是想问为什么我这样用指针不行,是哪里错了。。。我知道可以像你那样写 向往青莲 发表于 2013-12-17 18:58 static/image/common/back.gif
好难。。小白不明觉厉为啥你要写的这么复杂?
我知道可以不这样写,我就是想知道这样用指针为什么运行不了。。。 daitou 发表于 2013-12-17 19:17 static/image/common/back.gif
我知道可以不这样写,我就是想知道这样用指针为什么运行不了。。。
你声明的int *p(int a);是干什么用的?
c=(*p)(b);这句的功能又是什么呢? #include<stdio.h>
int main()
{
int min(int a);
int (*p)(int a);//int *p(int a[]9)代表这是一个函数,返回值为int*类型,而我这样定义代表p是一个指针,
//指向的是int XXXX(int a)函数
int b={9,8,7,6,2,4,2,1,5};
int c;
p=min; //所以这里才可以把min赋值给p,注意函数名就是指向函数的指针
c=p(b); //不能用*p,p是指向函数内存地址的指针,*p是啥? 我擦。。肯定不行啊
printf("%d\n",c);
return 0;
}
int min(int a)
{
int i;
int min=a,num=0;
for(i=1;i<9;i++)
{
if(min>a)
{
min=a;
num=i;
}
}
return num;
} 你这样定义,好像是在定义函数指针 实在不行反编译一下 这个能通过编译吗,怀疑 maomingkun 发表于 2013-12-17 19:27 static/image/common/back.gif
你声明的int *p(int a);是干什么用的?
c=(*p)(b);这句的功能又是什么呢?
定义函数指针,和通过函数指针调用函数。 水一下{:1_1:}{:1_1:}{:1_1:} 向往青莲 发表于 2013-12-17 19:36 static/image/common/back.gif
有道理,学习了 支持鱼C,顶一下 乱七八糟
页:
[1]