Почему нельзя двумерный массив преобразовывать в указатель на указатель? - C (СИ)
Формулировка задачи:
Имеем массив: при передаче его в функции количество столбцов должно быть определено: или В книге есть
но почему так?
По какой причине это сделанно? т.е. почему нельзя двумерный массив преобразовывать в указатель на указатель? например f(int **p) { ... }
int daytab[2][13];
f(int daytab[][13]) { ... }
f(int (*daytab)[13]) { ... }
If a two-dimensional array is to be passed to a function, the parameter declaration in the function must include the number of columns; the number of rows is irrelevant,
since what is passed is, as before, a pointer to an array of rows, where each row is an array of 13 ints. In this particular case, it is a pointer to objects that are arrays of 13
ints.
Решение задачи: «Почему нельзя двумерный массив преобразовывать в указатель на указатель?»
textual
Листинг программы
int *pArr = new int*[5];
Объяснение кода листинга программы
В данном коде:
- Создается двумерный массив
pArr
типаint*
размером 5. - Для каждого элемента массива
pArr
выделяется память под указатель наint
с помощью оператораnew
. - В итоге, каждый элемент массива
pArr
будет указывать на отдельный блок памяти, выделенный подint
. - При желании, можно разыменовывать указатель
pArr
и получить доступ к каждому из выделенных блоков памяти, как к одномерному массиву.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д