2011-10-09 3 views
0

방금 ​​C 언어를 배우기 시작했습니다. 포인터 배열 int * parr이 있고 난수로 채우고 다른 것들을 할 필요가 있습니다. 하지만 난 그걸 난수로 채우는 법을 모르겠다. 나는 이런 식으로 뭔가를 시도하지만, 프로그램 응답 : 단지에 대한 포인터를 정의C 배열과 포인터

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

1 차원 배열로 만들었습니까? – Beta

+2

이 문제의 핵심은 parr을 정의하고 초기화하는 방법에 있습니다. 따라서 해당 코드도 추가하십시오. – fvu

+1

'parr'의 선언과 할당으로 전체 코드를 게시해야합니다. – sjngm

답변

5

당신이 그것을 초기화하는 방법, 당신은 아마 이런 malloc 메모리에이를 정수이지만 연결된 저장 장치가 없습니다. 당신도

int parr[sizeofarray]; 

또는

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

스토리지의 적당한 양을 얻을 수 있었다.

(예 : sizeofarray 기준)은 적어도 R * C이어야합니다.

+0

나만인가, 아니면 초기화되지 않은 포인터를 역 참조 할 것인가? – lericson

+3

@lericson 그것은 단지 당신입니다 :-) – cnicutar

2
int *parr; 

:

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

R * C * sizeof (int) –

+0

@roo no, 왜냐하면 sizeapparray를 int 배열의 크기 인수로 사용하거나 calloc을 nelem 매개 변수로 사용하기 때문입니다. calloc! = malloc – fvu

관련 문제