2011-10-09 169 views
0

剛開始學習C語言。 我有一個指針數組int * parr,我需要用隨機數填充它,然後用它做一些其他的事情。 但我甚至不明白如何用隨機數填充它。我想這樣的事情,但它掛起程序:C數組和指針

for(i=0 ; i<R ; i++) 
{ 
    for(j=0 ; j<C; j++) 
    { 
    *(parr+i*C+j)=rand() % 10; 
    printf("%d",*(parr+i*C+j)); 
    } 
    printf("\n"); 
} 
+0

你用一維數組做過嗎? – Beta

+2

這個問題的關鍵在於如何定義和初始化parr,所以請添加那一點代碼。 – fvu

+1

您需要發佈整個代碼,聲明並分配'parr'。 – sjngm

回答

5

初始化它的方式,你可能要malloc記憶是這樣的:

parr = malloc(R * C * sizeof(*parr)); 
+0

只是我還是會這個解除引用一個未初始化的指針? – lericson

+3

@lericson它只是你:-) – cnicutar

2
int *parr; 

只定義一個指針整數,但沒有與之關聯的存儲。你既可以

int parr[sizeofarray]; 

int *parr = calloc (sizeofarray, sizeof(int)); 

獲得存儲適量。

根據您的示例sizeofarray應至少爲R * C

+0

它應該是:R * C * sizeof(int) –

+0

@Roee否,因爲我使用sizeofarray作爲int數組的大小參數,或者使用calloc作爲nelem參數。 calloc!= malloc – fvu