这似乎应该很容易,但我花了太多时间.希望有人可以提供帮助.
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.为什么?
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":
