gpt4 book ai didi

c - Printf 和数组

转载 作者:太空狗 更新时间:2023-10-29 15:47:23 26 4
gpt4 key购买 nike

有人问我这个问题作为类练习:

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

printf("%d\n", *(A+A[1]-*A));

我在纸上想不出来,所以继续编译一个简单的程序并测试它,发现 printf("%d",*A) 总是给我 1 用于输出。

但我仍然不明白为什么会这样,因此如果有人能解释一下就太好了。

最佳答案

A 被视为指向整数数组第一个元素的指针。A[1] 是该数组第一个元素的值,即 3(索引从 0 开始)*A 是 A 指向的值,如果是数组的第零个元素,则为 1。所以

A[1] - *A == 3 - 1 == 2

现在我们有

*(A + 2)

这就是指针算法的用武之地。因为 A 是一个指向整数的指针,所以 A+2 指向该数组中的第二个(从 0 开始的)项,*(A+2) 获取它的值。所以答案是 5。

另请注意,指向整数的指针和整数数组在 C 语言中有些不同,但出于本次讨论的目的,它们是同一件事。

关于c - Printf 和数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37558663/

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