gpt4 book ai didi

改变指针数组的内容

转载 作者:太空宇宙 更新时间:2023-11-04 01:12:39 24 4
gpt4 key购买 nike

这看起来应该很容易,但我在这上面花了太多时间。希望有人能提供帮助。

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

请看下面

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

我认为输出将是 bye,因为我使用 *name="bye"

更改了 a[] 的内容

但输出仍然是hi。为什么?

最佳答案

char *name[]={a,b};//name 里面的每一项不是字符串字面量?? - 不完全是,每个元素都是一个指向 char 的指针

所以 name 是一个指针数组。 *name="bye" 更改这些指针中第一个更改的内容。它不会更改旧指针指向的内存。

如果您想这样做,您通常会使用 strncpy,但请注意,这里您没有足够大的数组来执行此操作。

(我还希望你的编译器给你一个关于将 const char * 分配给 char* for *name="bye"的警告)

*name="bye" 之前:

State before

*name="bye" 之后:

State after

关于改变指针数组的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8691950/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com