gpt4 book ai didi

c - 了解 C 数组和指针

转载 作者:太空狗 更新时间:2023-10-29 14:52:23 25 4
gpt4 key购买 nike

需要一点帮助来理解这段代码中究竟发生了什么。当我运行程序时,它会打印 7。

#include <stdio.h>
int main() {
int a[] = {1,2,3,4,5,6,7,8,9};
int b[] = {1,2,3,4,5,6,7,8,9};
int c = 5;
int *p = a;
printf("--> %d", (c[b])[p]);
return 0;
}

当涉及到 printf 语句中的 (c[b])[p] 部分时,我只是有点困惑。任何帮助/解释将不胜感激。

最佳答案

这样写有点奇怪,但是 C 中的 [] 运算符是可交换的。这意味着 (c[b])[p]p[b[c]] 相同,后者更容易理解:

p[b[c]] = p[b[5]] = p[6] = a[6] = 7

对原始表达式做同样的事情也可以,只是有些地方看起来有点奇怪:

(c[b])[p] = (5[b])[p] = (b[5])[p]) = 6[p] = p[6] = a[6] = 7

[] 的可交换性(如果这是一个词)只是由于它的定义 - 也就是说,a[b]* 相同(a + b),在这里你可以看到ab的顺序无关紧要。

关于c - 了解 C 数组和指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27464990/

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