2012-06-29 101 views
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 + W返回*代替+的? (25而不是10)...

+3

'int wL []'?你的意思是'int wL'? – Henrik

回答

7

因爲wL是在你的代碼的指針,這樣你做的,而不是一個標準的整數算術指針算術:

W L + VL = W L + VL *的sizeof( int)

由於int在大多數平臺上都是4字節,所以您的wL+vL變爲5+5*4 = 25,這是您得到的結果。只需將int wL[]替換爲正確的int wL,即可獲得所需的行爲。

+0

有時甚至更熱鬧地離開這個領域,因爲它是一種編譯器定義的東西。當我在簡單的算術上得到大量的負數時,我知道我在某處弄錯了指針。 – SilverbackNet

+0

我在wL中沒見過[] - 「 - 謝謝你的回覆。:) –

相關問題