字符指针

cod*_*fun 3 c string

为什么这段代码不起作用?

int main(){
  char *str ="abcde";
   scanf("%s",str);
  printf("%s",str);
}
Run Code Online (Sandbox Code Playgroud)

但这有效吗?

int main(){
  char str[] ="abcde";
   scanf("%s",str);
  printf("%s",str);
}`
Run Code Online (Sandbox Code Playgroud)

ami*_*mit 5

在第一个代码中,您声明一个指向字符串文字的指针:"abcde".
这可能是一个常数,你将无法改变它.

第二个代码是声明一个数组并填充它['a','b',c','d','e','\0'],而不是一个常数 - 所以你可以改变它.