在这个程序中,假设数组从 2000 开始,那么元素应该出现在内存位置 arr[1]=2004 和 arr[5]=2020。如果是这样,那么 (j-i) 应该给出 16,即 j 和 i 的内存位置之间的差异。但是它为 j-i 给出了值“4”。为什么它不给出值 16?
main()
{
int arr[]={10,20,30,45,67,56,74};
int *i,*j;
i=&arr[1] ;
j=&arr[5] ;
printf ("%d %d",j-i,*j-*i);
}
最佳答案
其实是告诉你元素个数的区别。
数组连续元素之间的差总是1
要通过它们之间的地址差来查找,您需要将差
乘以sizeof
数据类型
获取实际地址差异,
int difference = sizeof(int) * (j - i)
可以找到详细说明Here
关于c++ - 数组内存位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15037498/