在这个程序中,假设数组从 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);
}
它实际上是在告诉您元素数量的差异。
数组的连续元素之间的区别总是通过地址来查找它们之间的1
区别,你需要乘以数据类型difference
sizeof
要获得实际的地址差异,
int difference = sizeof(int) * (j - i)
或许对你有帮助,,
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
void main ()
{
clrscr();
int arr[4];
for(int p=1; p<=4; p++)
{
cout<<"enter elements"<<endl;
cin>>arr[p];
}
int i,j,k;
i=arr[2];
j=arr[4];
k=arr[2]-arr[4];
cout<<k;
getch();
}