2011-10-09 173 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