C语言问题 这个程序是将大写字母转换成小写字母?

这个程序是将大写字母转换成小写字母,为什么函数部分最后要return*c它不是直接指向主函数的s了吗?还有,函数中的c指针会自动后移吗?为什么不c++... 这个程序是将大写字母转换成小写字母,为什么函数部分最后要return*c它不是直接指向主函数的s了吗?还有,函数中的c指针会自动后移吗?为什么不c++ 展开
 我来答
乘风破浪的轮船abcde
2020-05-12 · 生活不止有眼前的苟且,还有互联网
乘风破浪的轮船abcde
采纳数:522 获赞数:973

向TA提问 私信TA
展开全部
char fun(char *c) return *c 后,它的值被赋给了*p。
但因为 *p = func(p);所以实际上p和c指向的是同一个地址。
在fun的内部,*p的值就已经被修改了。
所以return *c没有错,但其实是多余的操作。
另外c指针在fun函数里不会自动后移,
但p指针会在main函数里通过p++自动后移。
请采纳,谢谢。
金色潜鸟
2020-05-12 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5734万
展开全部
return *c 的目的是 用 *p = fun(p); 方式调用时不出错。
当然 不返回,改为:
void fun(char *c){
if (*c>='A' && *c<='Z') *c= *c+32;
}
调用 while(*p){fun(p);putchar(*p);p++;} 更简洁。

函数 char fun(char *c){ } 的 c 指针 没有变化,因函数内 没修改 c 的 指向。另,可以把*c 理解成 一个字符, 函数修改了一个字符的 值。
程序中 p++; 推动指针向后移动。不是靠 c。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式