2016-03-21 14 views
-2

て配列に要素を追加すると、誰かが私に説明できます:このコードが動作する理由関数呼び出し

#include <stdio.h> 

void set_array(int array[3]); 

int main() 
{ 
    int a[3] = {1, 2, 3}; 

    set_array(a); 

    for (int i = 0; i < 4; i++) 
    { 
     printf("%d\n", a[i]); 
    } 
} 

void set_array(int array[3]) 
{ 
    array[3] = 4; 
} 

それは私が関数呼び出しによって配列に要素を追加することが可能であるどのように?誰かがここにカーテンの後ろに起こっていることを私に説明することはできますか?

ありがとうございます。

+1

これは未定義の動作です。 – owacoder

+0

何が起こると思いますか?どうして? – Olaf

+0

これはちょうどうまくコンパイルされ、実際には要素を 'a'配列に追加することがわかりました。あなた自身のためにそれを試してください。 –

答えて

0

あなたはmalloc()を使用して配列を割り当て、次にrealloc()を使用する必要があります。