gpt4 book ai didi

C 编程 - 字符数组与字符串数组寻址消歧

转载 作者:行者123 更新时间:2023-11-30 18:31:22 26 4
gpt4 key购买 nike

char contents[8][2]={"1","2","3","4","5","6","7","8"};
char* contentsx[8]={"1","2","3","4","5","6","7","8"};

printf("Contents: %s\n", contents[1]);
printf("Contents: %s\n", &contents[1]);
printf("Contentsx: %s\n", contentsx[1]);
printf("Contentsx: %s\n", &contentsx[1]);

打印:

Contents: 2
Contents: 2
Contentsx:2
Contentsx: //prints nothing or some garbage character

问题是,为什么contents[1]是元素1的值,与 &contents[1] 打印相同的结果,即元素 1 的地址在这种情况下,为什么 contentsx[1] 的值不同于&contentsx[1](有一些未定义的行为)

最佳答案

这是因为 contents 是一个数组的数组。

contents[1] 表示此数组中的第二个数组。因此,它的名称衰减为指向其第一个元素的指针,其大小为 1。然而,&contents[1] 指向整个数组,大小为 2。

xcontents[1] 是一个 char *,指向给定字符串的确切位置。 &xcontents[1] 是一个指向条目的 char **,在本例中是一个 char *

关于C 编程 - 字符数组与字符串数组寻址消歧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23930833/

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