本币汇率贬值:c语言问题---能实现两字符交换的是?

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/28 11:11:42
A.char p[]="glorious",q[]=leader",t[9];
strcpy(t,p);strcpy(p,q);strcpy(q,t);
char p[]="glorious",q[]=leader",*t;t=p;p=q;q=t;
C.char *p="glorious",*q=leader",*t;t=*p;p=q;*q=t;
D.char p[]="glorious",q[]=leader",t;int i;
for(i=0;p[i]!='\0';i++) {t=p[i];p[i]=q[i];q[i]=t}
为什么选A,而不选d了?A复制了之后为leader\0s\0.应该不正确把?

A没错阿
strcpy函数的实质是字符串数组首地址的交换
像D就不对了阿
你想 q[7]的时候不是数组下标越界了吗?哈哈
——北京理工大学学生 QQ540085595

D的问题关键在于不能将'\0'交换,数组下标越界是一个意外,如果我们取相同个数的串呢,所以关键在于'\0'中,没有了字符串的结束标志还谈什么交换字符串。
A的正确没问题,仔细看看strcpy的定义,而且字符串出现'\0'就表示结束,计算机不会管后面是什么,只认前面的为其合法串。