C'est un cas réel du puzzle.A propos de pointeurs, tableau et malloc
#include <stdio.h>
#include <stdlib.h>
#define ROWS 10
#define COLS 8
void process_array(int array[ROWS][COLS]) {
int i,j, count =0;
for (i=0; i< ROWS ;i++)
for(j=0 ; j<COLS; j++)
array[i][j]= count++;
}
int main() {
int **array = malloc(sizeof(int)*ROWS*COLS);
process_array(array);
/** int i,j;
for (i=0; i< ROWS ;i++){
for(j=0 ; j<COLS; j++)
printf("%d ",array[i][j]);
printf("\n");
}
**/
return 0;
}
Questions. (A) Bob veut savoir si le code d'Alice est correct. Il déconnecte le code de la ligne 21 à la ligne 26 pour sortir le contenu du tableau. Quel résultat obtiendra-t-il? (B) Alice insiste sur le fait que son code est absolument correct (ce qui est vrai). Comment peut- résoudre le problème si Bob a besoin d'accéder à la matrice dans la fonction principale via les opérateurs d'indice (c'est-à-dire, array[i][j]
)?
(c) Alice change sa signature de fonction
void process_array (int ** array) ;
Quelle est/sont la modification correspondante (s) doit rendre Bob à la fonction principale? (D) Un autre étudiant Charlie conseille à Bob et Alice d'utiliser un tableau unidimensionnel pour simuler un tableau à deux dimensions. Bob modifie ensuite la ligne 18 du code ci-dessus en .
int * array=malloc (sizeof (int) *ROWS *COLS) ;
Quelles sont les autres modifications à apporter au reste du code? Supposons qu'Alice veuille revenir à son implémentation d'origine.
S'il vous plaît me donner un coup de main.Merci beaucoup.
Ça sent comme les devoirs – Paddyd
Ce sont mes professeurs C puzzle et moi veulent penser plus profondément dans pointeur –
C'est pourquoi vous devriez essayer d'abord les questions, puis demander de l'aide. Vous n'apprendrez pas beaucoup en demandant les réponses! – Paddyd