In C, if I have a pointer to an array of pointers, how do I assign a pointer to an object to be element of the array of pointers?
I tried something like this: (Note: arrayPointer is a pointer to an array of pointers)
(*arrayPointer)[i] = pointer;
But it didn't work. It gives me seg fault core dumps. Then I tried this:
(*arrayPointer + i) = pointer;
It does not compile.
Here is an example similar to my question:
#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);
}
I used gdb to check:
Program received signal SIGSEGV, Segmentation fault.
0x0000000000400599 in create (N=8) at main.c:20
20 (*node)[i] = newNode(i);