鱼C论坛

 找回密码
 立即注册
查看: 2718|回复: 14

指针的一道题,求教

[复制链接]
发表于 2013-12-17 18:40:13 | 显示全部楼层 |阅读模式
1鱼币
#include<stdio.h>
int main()
{
        int min(int a[9]);
        int *p(int a[9]);
        int b[9]={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[9])
{
        int i;
        int min=a[0],num=0;
        for(i=1;i<9;i++)
        {
                if(min>a[i])
                {
                        min=a[i];
                        num=i;
                }
        }
        return num;
}
请问为什么运行不了?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-17 18:58:00 | 显示全部楼层
好难。。小白不明觉厉为啥你要写的这么复杂?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-17 19:09:07 | 显示全部楼层
#include<stdio.h>
int main()
{
        int min(int a[]);
        
        int b[9]={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[0],num=0;
        for(i=1;i<9;i++)
        {
                if(min>a[i])
                {
                        min=a[i];
                        num=i;
                }
        }
        return num;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-12-17 19:14:10 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-12-17 19:17:10 | 显示全部楼层
向往青莲 发表于 2013-12-17 18:58
好难。。小白不明觉厉为啥你要写的这么复杂?

我知道可以不这样写,我就是想知道这样用指针为什么运行不了。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-17 19:27:18 | 显示全部楼层
daitou 发表于 2013-12-17 19:17
我知道可以不这样写,我就是想知道这样用指针为什么运行不了。。。

你声明的int *p(int a[9]);是干什么用的?
c=(*p)(b);这句的功能又是什么呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-17 19:36:33 | 显示全部楼层
#include<stdio.h>
int main()
{
        int min(int a[9]);
        int (*p)(int a[9]);  //int *p(int a[]9)代表这是一个函数,返回值为int*类型,而我这样定义代表p是一个指针,
        //指向的是int XXXX(int a[9])函数
        int b[9]={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[9])
{
        int i;
        int min=a[0],num=0;
        for(i=1;i<9;i++)
        {
                if(min>a[i])
                {
                        min=a[i];
                        num=i;
                }
        }
        return num;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-17 19:47:07 From FishC Mobile | 显示全部楼层
你这样定义,好像是在定义函数指针
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-17 19:47:57 From FishC Mobile | 显示全部楼层
实在不行反编译一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-17 19:48:50 From FishC Mobile | 显示全部楼层
这个能通过编译吗,怀疑
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-12-17 20:31:13 | 显示全部楼层
maomingkun 发表于 2013-12-17 19:27
你声明的int *p(int a[9]);是干什么用的?
c=(*p)(b);这句的功能又是什么呢?

定义函数指针,和通过函数指针调用函数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-18 20:37:59 | 显示全部楼层
水一下{:1_1:}{:1_1:}{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-20 23:27:01 | 显示全部楼层

有道理,学习了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-23 10:10:49 | 显示全部楼层
支持鱼C,顶一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-23 18:15:34 | 显示全部楼层
乱七八糟

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 03:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表