为什么a输出原字符串?没有变成指针指向的字符串?
2个回答
展开全部
因为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);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询