int * var[10] и int (*var)[10];
для первого работает потому что эквивалентно
int **var;
int *a;
и выделить для него памяти сколько нужно, а потом обращаться c ним как с обычным массивом.
А может это указатель на целое.
int c;
int *a=&c;
блин, я в терминологии не силен, но это что-то типа "типизированного указателя", а на что он указывает - это тебе решать.
Массивы в "Си" суть указатели, на самом деле.
В "Си" массивов именно как сборок просто нет.
---
"А я обучался азбуке с вывесок,
листая страницы железа и жести."
второе --- указатель на указатели, на него выделена памяти (sizeof *).
---
"А я обучлся азбуке с вывесок,
листая страницы железа и жести."
int *a;
указатель на начало массива(массив)
int * var[10]
указатель на память, где храниться адрес начала массива(указатель на массив)
если да, то ты не правильно понял- это code для первого var-а...
Отличие состоит только в начальном значении и выделении памяти.
Для уяснения тонкостей советую познакомиться с "Алголом-68".
---
"А я обучался азбуке с вывесок,
листая страницы железа и жести."
int **var;
если у тебя нечто
var=(int **)malloc(sizeof(int*)*k);
то проблем не будет, а если нет, то результат операции не предсказуем(завист от начального значения var)
int* arr[10]; - массив указателей на int. Сами int могут быть, где угодно.
int (*arr)[10] - указатель на массив из 10 int. Все Int собраны в одном месте.
И грамотный компилятор должен различать, такие типы и предупреждать о неправильном использовании.
1)
var = new int*[10]; var[i] = new int;
2)?
*var = new int[10];
Оставить комментарий
marizha
который из этих двух является указателем на массив, а который - массивом указателей?по-моему, судя по приоритетам, первый var является указатлем на массив, но тогда возникает еще один вопрос по поводу инициализации этого var-а:
почему это правильно:
т.е. получается, что var является массивом указателей а не указателем на массив?