gpt4 book ai didi

带指针的 C 输出

转载 作者:太空狗 更新时间:2023-10-29 15:57:46 24 4
gpt4 key购买 nike

我试图理解下面一段代码的输出,它是如何产生输出的

-2 1 2 -4 3

int main()
{
int i, a[5] = {3, 1, 2, -2, -4};
int *p = a;

for(i = 0; i < 5; i++)
{
printf("%d ", *(p + *p));
p += *p;
}

return 0;
}

最佳答案

a[0]   a[1]  a[2]  a[3]  a[4]   // array indexes
3 1 2 -2 -4 // value
1001 1005 1009 1013 1017 // Consider it is memory location.

p == 1001; // p=a;

增量将像这样完成。 p+(值 * sizeof(int))

在第一个循环中,

1001 + 3 ; // *(p + *p); p== 1001 , *p == 3

因此它将打印 1013 中等于 -2 的值。

After that you are doing this `p += *p;` Now `p` points to `1013`

第二个循环,

1013 + -2; // *(p + *p); p== 1013 , *p == -2

所以它会打印1 (1005)。分配 之后,现在 p 指向 1005

第三个循环,

1005 + 1 ; // *(p + *p ); p == 1005  , *p == 1

它将打印2(1009)。现在 p 变为 1009

第四个循环,

1009 + 2 ;  // *(p + *p ); p == 1003 , *p == 2

它将打印-4(1017)并且p变为1017

最后,

1017 + -4 ; // It becomes 1001.

因此它将打印 1001 中的值。因此值为 3。

关于带指针的 C 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29070914/

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