在写代码的过程中遇到这么一个问题:
char *str = "abc";
char *A = str;
char *B = str+1;
printf("A:%c, B:%c\n", *A, *B);
*A = 'c';
*B = 'c';
printf("%s\n", str);编译后运行报错:
Press ENTER or type command to continue
A:a, B:b
Command terminated
*A,*B显示有值,但是运行报错。后将代码改为下面的,还是同样报错。
char *str = "abc";
char *A = &str[0];
char *B = &str[1];
printf("A:%c, B:%c\n", *A, *B);
*A = 'c';
*B = 'c';
printf("%s\n", str);开始一直没找到原因。
后面才了解到char *str = "abc";表示的是一个字符串常量,不能赋值,修改。
将char *str = "abc"; 改为 char str[] = "abc";就可以了。
本文详细解析了C语言中字符串常量在赋值过程中的常见错误,通过实例展示了将字符串常量作为指针变量使用时的正确与错误操作,并提供了修正方法。
881

被折叠的 条评论
为什么被折叠?



