为什么a输出原字符串?没有变成指针指向的字符串?

编程c怎么输出变后的值呢?为什么用strcpy(p,p+m-1)可以?... 编程c
怎么输出变后的值呢?为什么用strcpy(p,p+m-1)可以?
展开
 我来答
duanggi
2019-05-16 · TA获得超过196个赞
知道小有建树答主
回答量:240
采纳率:87%
帮助的人:146万
展开全部

因为a本身永远都是指向字符串的首地址的。我猜测题主的原意是想将指针a向前移动m-1个位置。但是这样题目中的子函数不能实现这个功能。实际上,无论是指针还是值,传递的时候都是值传递。当调用函数fun时,形参p=a,此视p和a都是指向数组的首地址的。然后指向p=p+m-1,将指针p向前移动了m-1个位置,虽然p确实移动了,但是a还是那个a,没有移动。

题主可以做一个实验,在函数fun里面输出puts(p),会发现p确实指向了m-1的位置。

可以改为如下代码来实现题主的需求

将puts(a);改为如下两行

char* p=fun(a, m);
puts(p);
钺森莉SW
2019-05-15 · TA获得超过197个赞
知道小有建树答主
回答量:402
采纳率:58%
帮助的人:69.7万
展开全部
调用fun函数后字符数组a中第m个字符的地址由fun函数本身返回,但a(字符串首地址)的值不会改变,所以输出a时仍是原字符串。
追问
那怎么输出变后的值呢?为什么用strcpy(p,p+m-1)可以?
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式