阵列存储位置

Sah*_*hil 3 c c++ arrays

在这个程序中,假设数组从2000开始,那么元素应该存在于内存位置arr [1] = 2004和arr [5] = 2020.如果是这样的话,那么(ji)应该给出16,j和i的存储位置之间的差异.但是它给ji的值'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);
} 
Run Code Online (Sandbox Code Playgroud)

PaR*_*RaJ 9

它实际上告诉你元素数量的差异.

数组的连续元素之间的差异总是1通过它们之间的地址差异找到,你需要将数据类型difference与数字相乘sizeof

要获得实际的地址差异,

int difference =  sizeof(int) * (j - i)
Run Code Online (Sandbox Code Playgroud)

详细说明可以在这里找到