gpt4 book ai didi

c - 数组中地址差异的歧义

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

#include <stdio.h>
main()
{
int a[] ={ 1,2,3,4,5,6,7};
char c[] = {' a','x','h','o','k'};
printf("%d ", (&a[3]-&a[0]));
}

程序的输出是 3。但是,下面获得的值的输出差异是 12。谁能解释一下歧义。

#include <stdio.h>
main()
{
int a[] ={ 1,2,3,4,5,6,7};
char c[] = {' a','x','h','o','k'};
printf("%d %d ", &a[3],&a[0]);
}

最佳答案

这称为指针算法。结果是值除以 sizeof(int)

如果字节差为 12,并且 int 的大小为 4,则结果为 12/4=3

顺便说一句,打印地址时使用格式说明符%p:

printf("%p     %p ", &a[3],&a[0]);

关于c - 数组中地址差异的歧义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12991046/

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