鱼C论坛

 找回密码
 立即注册
查看: 3634|回复: 12

指针函数

[复制链接]
发表于 2021-4-7 22:54:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
char *getWord(char);
char *getWord(char c)
{
        switch(c)
        {
        case'A':return"Apple";
        case'B':return"Banana";
        case'C':return"Cat";
        case'D':return"Dog";
        default:return"None";
        }
}
int main()
{
        char input;
        printf("请输入一个字母:");
        scanf("%c",&input);
        printf("%s\n",getWord(input));
}


这个函数用的是字符为是什么需要指针?指针在这里的作用是什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-7 23:15:16 | 显示全部楼层
本帖最后由 肖-肖 于 2021-4-7 23:16 编辑

它的作用正是它的名字:指针函数
指针函数,指针函数--》终究还是函数-》那么为什么叫指针函数?-》因为它的返回值是一个地址,而这个地址用指针来替代,所以就叫指针函数。
这是我的理解哈!
反正差不多就是这么个意思吧,我记得
又要问了为什么要返回地址而用指针?
因为调用者需要指针和地址啊!
就比如你的这个代码,是%s需要一个首地址,不是吗?
有了首地址%s就能输出完整的字符串了,嗯,就是这样!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-8 14:58:07 | 显示全部楼层
肖-肖 发表于 2021-4-7 23:15
它的作用正是它的名字:指针函数
指针函数,指针函数--》终究还是函数-》那么为什么叫指针函数?-》因为它 ...

是不是只有用字符类型做函数才用指针函数?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-8 15:18:19 | 显示全部楼层
认真学好C语言 发表于 2021-4-8 14:58
是不是只有用字符类型做函数才用指针函数?

不是啊,你这道题是char* 就要返回一个字符型的呀,你如果是int* 那就要返回一个整数型的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-8 16:26:05 | 显示全部楼层
我其实不太能理解为什么返回值是指针就要起个名字叫指针函数
搞那么多词有啥用  反而有人被绕晕了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-8 19:58:20 | 显示全部楼层
肖-肖 发表于 2021-4-8 15:18
不是啊,你这道题是char* 就要返回一个字符型的呀,你如果是int* 那就要返回一个整数型的

最后这个getWord(input)这个啥意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-8 20:00:37 | 显示全部楼层
yuxijian2020 发表于 2021-4-8 16:26
我其实不太能理解为什么返回值是指针就要起个名字叫指针函数
搞那么多词有啥用  反而有人被绕晕了

百度搜说是指针函数在一些时候更简便一些,我这个初学者对这个指针函数的应用也很晕
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-8 20:23:35 | 显示全部楼层
认真学好C语言 发表于 2021-4-8 20:00
百度搜说是指针函数在一些时候更简便一些,我这个初学者对这个指针函数的应用也很晕

en 多听一下小甲鱼的指针函数和函数指针对比着来学会好点,多学几遍,我也听了好几遍
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-8 21:29:25 | 显示全部楼层
认真学好C语言 发表于 2021-4-8 19:58
最后这个getWord(input)这个啥意思

这个就是把你输入的字符传递(类似复制一个过去而已)到函数里面,然后在函数里会进行检测符合哪个条件,然后返回符合条件的那个字符串的地址,也就是返回一个指向该地址的指针啦。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-10 11:09:26 | 显示全部楼层
因为这个函数参数是需要输入字符串
如果往函数传入字符串,那么就等于传入一个数组,就需要传入这个(数组*数据类型)的大小个字节,
如果往函数传入指针或者引用,那么只需要传入指针的大小,也就是4个字节,
能实现你的需求,还能大大的节约了功率,

类似的情况还有结构体和函数嵌套,一般也是用指针或者引用,不然传入的数据太大,消耗太多功耗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-10 11:13:31 | 显示全部楼层
yuxijian2020 发表于 2021-4-8 16:26
我其实不太能理解为什么返回值是指针就要起个名字叫指针函数
搞那么多词有啥用  反而有人被绕晕了

你可以理解成 一个函数的地址,指向那个函数就可以调用,因为有些功能需要调用不同的函数,一个函数调用得创建,构造和析构需要费大量的功耗,有指针就不一样了,只需要指来指去就可以实现相同的功能
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-10 11:26:55 | 显示全部楼层
2736946915 发表于 2021-4-10 11:13
你可以理解成 一个函数的地址,指向那个函数就可以调用,因为有些功能需要调用不同的函数,一个函数调用得创 ...

你是不是有什么误解  这是指针函数不是函数指针.....   百度一下好吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-10 11:38:43 | 显示全部楼层
yuxijian2020 发表于 2021-4-10 11:26
你是不是有什么误解  这是指针函数不是函数指针.....   百度一下好吧

...看错,理解成函数返回指针就行,还是比较好理解的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-21 19:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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