В C, если у меня есть указатель на массив указателей, как мне назначить указатель на объект, который будет элементом массива указателей?
Я пробовал что-то вроде этого: ( Примечание: arrayPointer - это указатель на массив указателей)
(*arrayPointer)[i] = pointer;
Но это не сработало. Это дает мне ошибки в сегменте памяти. Затем я попробовал это:
(*arrayPointer + i) = pointer;
Не компилируется.
Вот пример, аналогичный моему вопросу:
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
typedef struct node{
int index;
} node;
node* newNode(int i){
node* new = malloc(sizeof(node));
return new;
}
// Create a pointer to an array of node pointers
node *(*create(int N))[]{
int i;
node *(*node)[N];
for(i = 0; i < N; i++){
(*node)[i] = newNode(i);
}
return node;
}
int main(){
node *(*nodes)[8] = create(8);
}
Я использовал gdb для проверки:
Program received signal SIGSEGV, Segmentation fault.
0x0000000000400599 in create (N=8) at main.c:20
20 (*node)[i] = newNode(i);