malloc указатель на массив - PullRequest
       2

malloc указатель на массив

5 голосов
/ 17 февраля 2012
int (*p)[2];
p=(int(*))malloc(sizeof(int[2])*100);

Как правильно распределить указатель на массив?Я не могу понять часть с (int (*))

Ответы [ 2 ]

8 голосов
/ 17 февраля 2012

Публикация комментариев как ответа:
В C не следует приводить возвращаемое значение malloc. Пожалуйста, обратитесь к этому посту на SO для получения дополнительной информации о том, почему возвращение значения типа malloc не является хорошей идеей в C. И если по какой-то причине вы действительно хотите сыграть, это должно быть (int(*)[2]). (int(*)) - это int *. Размер, передаваемый в malloc, выглядит хорошо (выделение размера для 100 указателей на массив из 2-х дюймов). Так что вы должны делать

int (*p)[2];
p=malloc(sizeof(int[2])*100); 

Надеюсь, это поможет!

0 голосов
/ 17 февраля 2012

Непонятно, что вы хотите здесь. Если вы хотите, чтобы 100 пар int, например, были организованы как массив указателей на int (где каждый указатель указывает ровно на два целых числа), то вам нужно вызывать malloc 100 раз по 100 указателям на int, выделяя два целых числа каждый раз. 1001 *

Просто «не имеет смысла« размещать указатель на массив ». Вы можете использовать malloc для массива и назначить этот адрес указателю, или вы можете malloc для массива указателей. Но то, что вы спросили, не ясно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...