在写代码的过程中遇到这么一个问题:
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";就可以了。