永发信息网

c语言指针传递数组及返回的问题

答案:2  悬赏:20  手机版
解决时间 2021-03-08 23:04
我有这样一个程序,把一个数组的字符复制到另外一个里,正确的是
#include
char *fun(char *,char *);
int main (void)
{
char words[10];
char a[20]={"hello world"};
printf("%s",fun(words,a));
}
char *fun(char *s1,char *s2)
{
char *p=s1;
while(*s2!='\0')
*s1++=*s2++;
*s1='\0';
return p;
}
为什么在被调函数里要定义一个指针p,这样的原理是什么?
为什么不能直接返回s1?也就是
#include
char *fun(char *,char *);
int main (void)
{
char words[10];
char a[20]={"hello world"};
printf("%s",fun(words,a));
}
char *fun(char *s1,char *s2)
{
while(*s2!='\0')
*s1++=*s2++;
*s1='\0';
return s1;
}
这样是错的
最佳答案
因为在函数fun()中语句*s1++=*s2++;,所以执行完函数后,s1指向'\0'前边的字符,如果返回s1,则只会返回一个字符(最后的字符),之所以返回p,这是因为在函数的开始时,已将指针p初始化为s1的首址,只有这样才能返回正确的地址(指针)。
全部回答
int (*ptr) [m]     ptr是数组指针   它指向一个 数组 这个 数组 有m 个int元素  int *ptr[m]        ptr是指针数组     这个数组里 的元素 都是int类型的指针
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
大金空调外机三个阀门的怎么回事
在上海醉酒驾驶被抓到,现在要拘狱,有什么办
阿迪达斯和彪马有什么关系
关于支付宝扫码支付问题
顺丰农家菜地址在哪,我要去那里办事
一质量m的物体以速度V从地面竖直向上抛出,取
十四岁那年我追了一个男孩,十七岁我们分手了
美国密歇根州立大学和明尼苏达-双城分校
请问成都有没有好的中医开的门诊啊?
打呼噜用什么止鼾器好啊
中西方过年文化差异
找出句子中的错误并在后面横线上改正:If Jane
尚朋堂果木烤鸭青岛洪山坡店地址有知道的么?
XILINX 10.1如何生成cdc文件进行波形模拟
doctors,奶酪陷阱,任意依恋哪个更好看?有没
推荐资讯
竹炭包放车里,可以吸异味的吗
按揭成数是什么意思
股权激励002532是好事吗?今天停牌,对股价有
因为有了他 他们学校顺利进入决赛 但却在决赛
他们都说「物是人非」可究竟是什么意思、又有
下列属于生态系统的是A池塘里的所有生物和无
百姓生活超市(马陆店)怎么去啊,有知道地址的
2017年南京航空航天大学分数线是多少
q宠大乐斗在不是好友的情况下如何查看对方乐
含有四川的成语
成都茶店子客运站到双流工业园区高新综合保税
佳兆业1号交通方便吗?应该怎么过去?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?