gpt4 book ai didi

C 简单数组和指针

转载 作者:行者123 更新时间:2023-11-30 20:48:42 28 4
gpt4 key购买 nike

int a[] = {10, 15, 20, 25};
int b[] = {50, 60, 70, 80, 90};

int *x[] = {a, b};
int *y[] = {a + 2, b + 3};

int *p;
int *q;
int **r;

p = a;
q = y[1];
r = &q;

*p = &p[3] - y[0];
r[0][1] = **r - y[0][1];

最后a和b的内容是什么?

我发现*pa[0],而&p[3] - y[0]只是3 - 2,所以a[0] = 3 - 2 = 1。因此,a[] = {1, 10, 15, 20}(如果我错了请纠正我),但b[]是我迷失的地方。我不知道代码的最后一行是如何工作的。不知道 r[0][1] 指的是什么,因此获取 b[] 的内容很令人困惑。附:这是针对 C 的。

最佳答案

请记住,恒等式*(p + k) == p[k](或p + x == &p[k])意味着您始终可以将解引用重写为索引,反之亦然,因此,如果表达式令人困惑,您可以尝试不同的形式,看看它是否更有意义。

我个人认为索引更容易推理:

由于 r = &qr[0]*rq 相同:

q[1] = *q - y[0][1];

q[1] = q[0] - y[0][1];

qy[1] 得出:

y[1][1] = y[1][0] - y[0][1];

y[0]a + 2y[1]b + 3:

(b + 3)[1] = (b + 3)[0] - (a + 2)[1];

这是

*(b + 3 + 1) = *(b + 3 + 0) - *(a + 2 + 1);

这是

*(b + 4) = *(b + 3) - *(a + 3);

这是

b[4] = b[3] - a[3];

也就是说,

b[4] = 80 - 25;

关于C 简单数组和指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33062157/

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