0

次のコードで:

void fusioneArray(int v[], int vL, int w[], int wL[], int *fusione)
{
   int i,j,temp;
   int k=0;
   printf("%d",wL+vL);

   for(i=0;i<vL;i++)
   {
       fusione[k]=v[i];
       k++;
   }

   for(j=0;j<wL;j++)
   {
       fusione[k]=w[j];
       k++;
   }
}

int main()
{
    int v[5]={1,2,3,4,5};
    int w[5]={5,4,3,2,1};
    int i=0;
    int fusione[10];
    fusioneArray(v,5,w,5,fusione);
}

vL+wL が + ではなく * を返す理由を説明できますか? (10 ではなく 25)...

4

1 に答える 1

7

はコード内のポインターであるためwL、標準の整数演算の代わりにポインター演算を行っています。

wL+vL = wL + vL*sizeof(int)

aintはほとんどのプラットフォームで 4 バイトであるため、得られる結果は にwL+vLなり5+5*4 = 25ます。int wL[]正しいものに置き換えるだけでint wL、目的の動作が得られます。

于 2012-06-29T09:38:26.380 に答える