gpt4 book ai didi

c++ - 为什么指向字符串数组的指针会颠倒索引顺序?

转载 作者:行者123 更新时间:2023-11-30 21:25:54 25 4
gpt4 key购买 nike

好吧,我有一个字符串文字数组

char* messages[] = {
"t",
"123",
"test3",
"test4",
"test5",
"test1000"
};

我想创建一个指向数组的指针,我这样做:

char *(*p)[6] = &messages;

我想知道为什么会这样

p[0][3];

时返回“test4”
messages[3];

返回“test4”

还有

p[1][3]; 

返回段错误。我对这种行为感到非常困惑,我希望你们中的一位能够解释一下。

最佳答案

线路

char *(*p)[6] = &messages;

p定义为一个指针,该指针指向由6个char指针组成的数组

这意味着:

*p == messages
p[0] == messages

(*p)[3] == messages[3]
p[0][3] == messages[3]

但是,p[1] 无效,因为 p 不是数组。如果您使用 p[1],您将看到未定义的行为(分段违规错误就是此类行为之一)。

关于c++ - 为什么指向字符串数组的指针会颠倒索引顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25490017/

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