2011-10-09 3 views
0

J'ai juste commencé à apprendre le langage C. J'ai un tableau de pointeurs int * parr et j'ai besoin de le remplir avec des nombres aléatoires, puis d'en faire d'autres choses. Mais je ne comprends même pas comment le remplir avec des nombres aléatoires. J'ai essayé quelque chose comme ça, mais il se bloque le programme:C arrays et pointeurs

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

L'avez-vous fait avec un tableau à une dimension? – Beta

+2

la clé de ce problème réside dans la définition et l'initialisation de parr, alors ajoutez ce bit de code. – fvu

+1

Vous devez envoyer le code entier avec la déclaration et l'allocation de 'parr'. – sjngm

Répondre

5

La façon dont vous l'initialiser, vous avez probablement malloc mémoire comme ceci:

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

Est-ce juste moi ou est-ce que cela va déréférencer un pointeur non initialisé? – lericson

+3

@lericson C'est juste vous :-) – cnicutar

2
int *parr; 

juste définit un pointeur vers un entier, mais il n'y a pas de stockage associé. Vous pouvez soit

int parr[sizeofarray]; 

ou

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

pour obtenir la bonne quantité de stockage. En fonction de votre exemple, sizeofarray doit être au moins égal à R * C

+0

Il devrait être: R * C * sizeof (int) –

+0

@Roee non, parce que j'utilise sizeofarray soit comme un argument de taille pour le tableau int, ou dans calloc comme paramètre nelem. calloc! = malloc – fvu