麻烦问下C语言26题和27题A项。第一题不懂return(y-x-1)的含义。A项不懂为什么用*p

麻烦问下C语言26题和27题A项。第一题不懂return(y-x-1)的含义。A项不懂为什么用*p而不是p,结果就是错误的。... 麻烦问下C语言26题和27题A项。第一题不懂return(y-x-1)的含义。A项不懂为什么用*p而不是p,结果就是错误的。 展开
 我来答
tianyuwuse
2013-12-29 · TA获得超过1117个赞
知道小有建树答主
回答量:494
采纳率:100%
帮助的人:237万
展开全部
1、x是字符串开始的地址,y由于while中的*y++的判断,所以当循环结束的时候y指向了所求字符串结束符之后的位置,y-x表示y指向的位置与x指向的位置存储单元个数,由于y多指了一个,所以又进行了减去1的计算。由于字符串的每个存储单元的大小都是一个字节,所以return返回的恰好是x指向的字符串的长度;注:*y++等价于 *(y++)
2、选A是错误的,因为p没有明确的指向(这个函数的原意是定义一个指针变量p,然后让它所指向的单元作为中间变量以实现x和y所指向单元值的交换)。
如果把函数改成
funa( int *x, int *y )
{
int p;
p = *x; *x = *y; *y = t;
}
就可以选A了。
更多追问追答
追问
如果声明了p,而函数体中用*p,这是错误的吗,为什么?
追答
1、你在哪个地方声明的p?如果在该函数的形参处或函数体内声明的就没问题。如果不是在这个函数内,那必须是全局变量。否则没法使用。
2、再就是如果没让p指向一个“地方”时,使用是错误的。因此必须有 p=&a;或 int *p=&a;之类的语句之后才能有*p=,,,。
阳阳百宝箱
2013-12-29 · 超过33用户采纳过TA的回答
知道答主
回答量:169
采纳率:66%
帮助的人:45.5万
展开全部
return就是把括号里的计算结果返回到被调用函数,这里就是函数的计算结果地址减地址,就是长度
这个函数的功能是交换地址,肯定要用指针变量咯
追问
可是*p是错误的,应该用p
追答
我说错了,定义变量的时候是指针变量,后面用*P标志变量,就是直接交换变量的值,*p就相当于一个整形变量,应该是对的才是
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yuki_heu
2013-12-29 · TA获得超过347个赞
知道答主
回答量:149
采纳率:0%
帮助的人:70.3万
展开全部
第一题while到字符串最后是0 也就是y指向字符串尾,但是随后y自加一
所以return里除了y减去x外还要再减一
第二题用p也一样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式