改变指针数组的内容

int*_*075 1 c arrays pointers

这似乎应该很容易,但我花了太多时间.希望有人可以提供帮助.

char *labels[] = { "apple", "orange" }; // each items inside label is string literal. We can't change them-
Run Code Online (Sandbox Code Playgroud)

看下面的内容

char a[]="hi";
char b[]="hello";
char *name[]={a,b};//each item inside name is not string literal rite??
*name="bye";
puts(a);
Run Code Online (Sandbox Code Playgroud)

我认为输出将是bye因为我改变了a[]使用的内容*name="bye"

但产量仍然是hi.为什么?

Fle*_*exo 5

char *name[]={a,b};//each item inside name is not string literal rite??- 不完全是,每个元素都是指向a的指针char.

name指针数组也是如此.*name="bye"改变这些指针的第一个变化.它不会更改旧指针指向的内存.

如果你想这样做,你会strncpy一般使用,但请注意,在这里你没有足够大的数组来做到这一点.

(我本来还期待你的编译器给你分配一个警告,const char *char**name="bye")

之前*name="bye":

之前的状态

之后*name="bye":

国家之后