gpt4 book ai didi

c - 指向数组的指针地址

转载 作者:太空狗 更新时间:2023-10-29 17:00:58 24 4
gpt4 key购买 nike

下面是一个二维数组的例子。

int s[5][2] = {
{0, 1},
{2, 3},
{4, 5},
{6, 7},
{8, 9}
};

int (*p)[2];

如果我写 p = &s[0]; 没有错误。但是如果我写 p = s[0]; 就会出错,即使 &s[0]s[0] 会给出同一个地址。

请告诉我为什么会有差异,即使两者都提供相同的地址。

最佳答案

地址相同,但类型不同。

&s[0]int (*)[2] 类型,但是 s[0] 类型int [2],衰减为 int *

结果是,当对 p 执行算术运算时,它遍历数组的模式将取决于它的类型。如果您编写 p = &s[0] 然后访问 p[3][1],则您正在访问 s[3][1]。另一方面,如果您编写 int *q = s[0],则只能使用 q 访问 s 的第一个子数组,例如q[1] 将访问 s[0][1]

关于c - 指向数组的指针地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13119972/

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