daitou 发表于 2013-12-17 18:40:13

指针的一道题,求教

#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;
}
请问为什么运行不了?

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

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

maomingkun 发表于 2013-12-17 19:09:07

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

daitou 发表于 2013-12-17 19:14:10

maomingkun 发表于 2013-12-17 19:09 static/image/common/back.gif
#include
int main()
{


我是想问为什么我这样用指针不行,是哪里错了。。。我知道可以像你那样写

daitou 发表于 2013-12-17 19:17:10

向往青莲 发表于 2013-12-17 18:58 static/image/common/back.gif
好难。。小白不明觉厉为啥你要写的这么复杂?

我知道可以不这样写,我就是想知道这样用指针为什么运行不了。。。

maomingkun 发表于 2013-12-17 19:27:18

daitou 发表于 2013-12-17 19:17 static/image/common/back.gif
我知道可以不这样写,我就是想知道这样用指针为什么运行不了。。。

你声明的int *p(int a);是干什么用的?
c=(*p)(b);这句的功能又是什么呢?

向往青莲 发表于 2013-12-17 19:36:33

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

virusx1984 发表于 2013-12-17 19:47:07

你这样定义,好像是在定义函数指针

virusx1984 发表于 2013-12-17 19:47:57

实在不行反编译一下

virusx1984 发表于 2013-12-17 19:48:50

这个能通过编译吗,怀疑

daitou 发表于 2013-12-17 20:31:13

maomingkun 发表于 2013-12-17 19:27 static/image/common/back.gif
你声明的int *p(int a);是干什么用的?
c=(*p)(b);这句的功能又是什么呢?

定义函数指针,和通过函数指针调用函数。

ζ_Y°シ 发表于 2013-12-18 20:37:59

水一下{:1_1:}{:1_1:}{:1_1:}

水墨君 发表于 2013-12-20 23:27:01

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


有道理,学习了

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

支持鱼C,顶一下

卧室不要床 发表于 2013-12-23 18:15:34

乱七八糟

页: [1]
查看完整版本: 指针的一道题,求教