Это настоящий случай из головоломки.О указателях, массиве и 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;
}
Вопросы.
(a) Боб хочет знать, является ли код Алисы правильным. Он удаляет код из строки 21 в строку 26 для вывода содержимого массива. Какой результат он получит?
(b) Алиса настаивает на том, что ее код абсолютно прав (это правда). Как может он исправляет проблему, если Бобу нужно получить доступ к массиву в основной функции через операторы подписчика (т. Е. array[i][j]
)?
(с) Алиса меняет ее подпись функции
void process_array (int ** array) ;
Что является/являются соответствующими изменения (ы) должны Бобу сделать на основную функцию?
(d) Еще один ученик Чарли советует Бобу и Алисе использовать одномерный массив для имитировать двумерный массив. Затем Боб модифицирует строку 18 вышеуказанного кода, как следует из .
int * array=malloc (sizeof (int) *ROWS *COLS) ;
Каковы дальнейшие изменения, которые он должен внести в остальную часть кода? Пусть предположим, что Алиса хочет вернуться к своей первоначальной реализации.
Пожалуйста, помогите мне. Спасибо большое.
Пахнет домашней работой – Paddyd
Это моё головоломка C и хочу, чтобы я подумал глубже в указателе –
Вот почему вы должны сначала попытаться ответить на вопросы, а затем обратиться за помощью. Вы не узнаете много, попросив ответы! – Paddyd