gpt4 book ai didi

创建两个指针?字符 *名称[] = {"xxx", "yyy"}

转载 作者:太空狗 更新时间:2023-10-29 15:11:32 26 4
gpt4 key购买 nike

有人告诉我这是对我最后一个 question 的回答那个

char *name[] = {"xxx", "yyy"}

被编译器更改为

char *name[] = {Some_Pointer, Some_Other_Pointer};

我尝试了以下理解:

printf("%p\n", &name);
printf("%p\n", name);
printf("%s\n", *name);
printf("%c\n", **name);

所以作为输出它给我:

0xfff0000f0
0xfff0000f0
xxx
x

你能给我解释一下指针“name”的地址和指针“name”指向的地址是如何相同的吗?据我了解,指针“名称”本身占用 8 个字节。占内存4个字节的第一个字符串“xxx”怎么和指针在同一个位置?

最佳答案

首先,当你在 C 中有任何像 name 这样的数组时,数组的 value 就是它的第一个元素的地址。请注意,此值未存储在某些变量中。它在编译的汇编代码中用作立即值。所以考虑它的地址是没有意义的。

其次,由于数组是作为一串连续的位置存储在内存中的,所以数组的地址定义为第一个元素的地址。所以对于任何数组 A 你有以下相等的地址

 &(A[0]) == A == &A

如果你有指针数组或其他什么,它不会改变任何东西。

关于创建两个指针?字符 *名称[] = {"xxx", "yyy"},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21656908/

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