2012-01-21 2 views
4

Меня спросили в интервью, указатель на массив из 10 целых чисел, что-то вроде этого ниже.Как выделить указатель на массив

int (*p)[10]; 

Как вы распределяете его динамически?

Это то, что я сделал

p=(int *)malloc(10*sizeof(int)); 

Но это выглядит не так, потому что я не делаю правильное приведение типа.

Итак, я хотел бы знать, что это за тип * p ??

Как и int * p, p имеет тип int.

ответ

9

Вот как выделить:

p = malloc(sizeof *p); 

или

p = malloc(sizeof (int [10])); 

p имеет тип int (*)[10] и *p имеет тип int [10].

p это указатель на массив 10 int и *p представляет собой массив 10 из int.

+0

p = (int (*) [10]) malloc (10 * sizeof (int), это будет нормально? –

+1

'sizeof (int (*) [10])' - размер указателя, а не размер плацдарма, так что вы будете слишком мало выделять. –

+0

@ DanielFischer oh спасибо, исправлено в ответе. Я исправлю это и в комментарии. – ouah

Смежные вопросы