今天在学习C语言时遇到的问题,指针引用字符数组,实现字符串复制的几个方法。且看我细细道来,废话不多说,先上代码。(不用全看,只看CopyStr4方法和主函数就可)
#include <stdio.h>
void CopyStr1(char * to,char * from);
void CopyStr2(char* to, char* from);
void CopyStr3(char* to, char* from);
void CopyStr4(char* to, char* from);
void CopyStr5(char* to, char* from);
void main() {
char a[20], * pa = a;
char* pb = "hello";
CopyStr4(pa,pb);
printf("string a is:%s\n",pa);
}
void CopyStr1(char* to, char* from) {
for (; *from != '\0';to++,from++) {
/*from字符数组中未遇到空字符就复制到to*/
*to = *from;
}
*to = '\0';
/*to字符数组末尾加字符串结束标志--空字符'\0' */
}
void CopyStr2(char* to, char* from) {
while (*from!='\0') {
*to++ = *from++;
/*将自加运算放在赋值表达式,先运算再自加 (二者都是)*/
}
*to = '\0';
}
void CopyStr3(char* to, char* from) {
while ((*to = *from) != '\0') {
/*把赋值语句放在条件判断中,*/
to++;
from++;
/*表达式(*to = *from)的值是*to,判断它即判断*from,*/
/*未遇空字符则继续循环,遇到空字符结

本文探讨了C语言中指针自加自减运用于字符串复制的情况,特别是`to--`和`(*to)--`在循环结束后的表现。通过代码示例和实验结果,作者发现即使使用括号改变运算顺序,指针自加自减依然遵循特定的运算规则,引发了对于括号优先级的疑问,并寻求解答。
最低0.47元/天 解锁文章
1024





