daitou 发表于 2013-12-17 18:37:01

指针的一道简单题,求教

本帖最后由 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;
}
为什么运行不了的?

maomingkun 发表于 2013-12-17 18:57:03

#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;
}
这是修改后的代码

向往青莲 发表于 2013-12-17 18:57:16

好难。。小白不明觉厉为啥你要写的这么复杂?

maomingkun 发表于 2013-12-17 19:06:13

#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;
}

向往青莲 发表于 2013-12-17 19:37:18

#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;
}

daitou 发表于 2013-12-17 20:00:05

向往青莲 发表于 2013-12-17 19:37 static/image/common/back.gif


运行结果是7,错了

向往青莲 发表于 2013-12-18 12:29:58

daitou 发表于 2013-12-17 20:00 static/image/common/back.gif
运行结果是7,错了

呵呵。。。。。。。。。。那是你min函数的问题   min函数我都没改
你C语言咋学的????不说了。。。再说我就要骂人了、。。。。。。反正我也就无聊帮你解决一下。。。居然是是7?是我错了吗??你才给1分。。。。。。。难道还要我改你的源码?呵呵。。。激动了。。。抱歉

maomingkun 发表于 2013-12-18 13:28:57

我擦!源码都给你了居然不给最佳?:sweat:

364063141 发表于 2013-12-23 10:10:12

支持鱼C,顶一下

helehappy 发表于 2013-12-27 22:33:50

看来我也得学习了!!!
页: [1]
查看完整版本: 指针的一道简单题,求教