3

このプログラムでは、配列が2000で開始し、要素がメモリ位置arr [1]=2004およびarr[5]=2020に存在する必要があるとします。もしそうなら、(ji)はjとiのメモリ位置の差を16にする必要がありますが、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);
} 
4

2 に答える 2

9

実際には、要素数の違いを示しています。

配列の連続する要素の違いは、常にそれらの間のアドレスの違いによって見つけることです。データ型を1掛ける必要があります。differencesizeof

実際のアドレス差を取得するには、

int difference =  sizeof(int) * (j - i)

詳細な説明はここにあります

于 2013-02-23T05:44:26.580 に答える
0

お役に立てますように、、

  #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();

}

于 2013-02-23T08:03:10.037 に答える