C语言的一道题目 为什么要换成指针,用变量a和b不行吗? 还有就

 我来答
一叶畅舟叶华源1297
2016-09-19 · TA获得超过1060个赞
知道答主
回答量:137
采纳率:100%
帮助的人:62.1万
展开全部
1、题目中已经强调,不能修改main函数,注意第19行,&upper以及&lower是将upper与lower的变量地址传到fun函数中,其类型是指针,所以fun函数的后面两个参数是指针类型。故第3行后两个参数类型错误。
(假设此题目没有限定main函数不能更改,第19行你改为传入upper与lower,然后在20行打印的时候,upper与lower的值必然还是为0,因为按值传递时,fun函数里面的a、b只是upper与lower的一份拷贝,ab值的改变不影响upper、lower值,这块建议你看看【按值传递】这个知识点)
2、while (*s), s是一个char*类型指针,假设传入的字符串为“fang”,那么s的值等于'f'这个字符的地址。*s 为一个char字符,也就是'f', s++后,++产生的偏移为sizeof(char)长度,在s++后,s的值即为'a'这个字符的地址,此时*s等于'a',当*s为'g'时,继续s++,'g'后面的字符为'\0'(所有字符串的末尾都为0),那么*s就等于数字0(注意不是字符'0',数字0相当于NULL),这时候 while(*s) 相当于while(0) ,while条件为假(0为假,非0为真),while循环就会结束。规范的写法可以写为 while (*s != '\0')
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式