指针的一道简单题,求教
本帖最后由 daitou 于 2013-12-17 18:38 编辑#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;
}
这是修改后的代码 好难。。小白不明觉厉为啥你要写的这么复杂? #include<stdio.h>
int main()
{
int min(int *p,int x);//x是数组元素的个数
int *p;
int b={9,8,7,6,2,4,0,1,5};
int c;
p=b;
c=min(p,9);
printf("%d\n",c);
return 0;
}
int min(int *p,int x)//p是地址,b是数组的第一个元素地址
{
int i;
int min=*p,num=0;
for(i=1;i<x;i++)
{
if(min>*(p+i))
{
min=*(p+i);
num=i;
}
}
return num;
}
#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;
} 向往青莲 发表于 2013-12-17 19:37 static/image/common/back.gif
运行结果是7,错了 daitou 发表于 2013-12-17 20:00 static/image/common/back.gif
运行结果是7,错了
呵呵。。。。。。。。。。那是你min函数的问题 min函数我都没改
你C语言咋学的????不说了。。。再说我就要骂人了、。。。。。。反正我也就无聊帮你解决一下。。。居然是是7?是我错了吗??你才给1分。。。。。。。难道还要我改你的源码?呵呵。。。激动了。。。抱歉 我擦!源码都给你了居然不给最佳?:sweat: 支持鱼C,顶一下 看来我也得学习了!!!
页:
[1]