在这个程序中,假设数组从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)
它实际上告诉你元素数量的差异.
数组的连续元素之间的差异总是1通过它们之间的地址差异找到,你需要将数据类型difference与数字相乘sizeof
要获得实际的地址差异,
int difference = sizeof(int) * (j - i)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1390 次 |
| 最近记录: |