Динамически выделять матрицу с помощью typedef

У меня уже есть идея о том, как malloc матрица, если она была int**. Но используя typedef, я думаю, есть идея, но я не уверен.

typedef int LabeledAdjMatrix[SIZE][SIZE]; 

Я делаю это так?

APSP = (APSPMatrix*)malloc(sizeof(APSPMatrix));

Но когда я получаю доступ к нему, мне придется использовать *APSP[0][0], и я не знаю, как использовать это в memset/memcpy.

Есть ли правильный способ сделать это? И динамическое распределение и доступ к ним.

Ответ 1

Мой совет заключался бы в том, чтобы не использовать массивы typedefs, они делают код более трудным для чтения, поскольку это менее очевидно, когда размытие указателя массива происходит или не происходит.

Если вы хотите выделить смежный массив, вы можете написать:

int (*APSP)[SIZE] = malloc( sizeof(int[SIZE][SIZE]) );

а затем получить доступ к нему как APSP[0][0].

В вашем сообщении говорится о "malloc, как будто это был int **", по которому я предполагаю, что вы хотите, чтобы вам были выделены отдельные распределения для каждой строки... но тогда вы должны написать int **APSP и написать цикл для выделения каждой строки, это не имеет никакого отношения к [SIZE][SIZE].