gpt4 book ai didi

c - 为什么这个c程序输出这样?

转载 作者:太空宇宙 更新时间:2023-11-04 02:16:47 25 4
gpt4 key购买 nike

#include<stdio.h>
main
{
int x[]={1,2,3,4,5};
int i,*j;
j=x;
for(i=0;i<=4;i++)
{
printf("%u",j);
j++;
}
}

输出:

65512
65514
65516
65518
65520

但是当我将 printf 更改为“

printf("%u",&j[i]);

输出是:

65512
65516
65520
65524
65528

为什么地址在第一种情况下相差 2 而在第二种情况下相差 4?

只打印j和打印&j[i]有什么问题?

最佳答案

在第二个示例中,您获得了 4 次跳跃,因为您递增了 j 并且 偏移了 i!这两者的贡献相差 2。

还要注意 printf 不是类型安全的;由您来确保参数与格式说明符匹配。你已经指定了 %u,但是你给了它一个 int *,你应该使用 %p 作为指针。

关于c - 为什么这个c程序输出这样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6574392/

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