I'm trying to do something with an array (malloc-ed), namely arr of a custom struct. The array is passed by reference to a function. I get a segfault whenever I tried to index anything other than arr[0] in the function at runtime (e.g (*arr[1])->i = 3;). Why is this happening?
The full source code is:
#include <stdio.h>
#include <stdlib.h>
#define SIZE 100
typedef struct{
    int i;
    float f;
}foo;
void doSomething(foo ***arr);
int main()
{
  foo **arr = (foo**) malloc (SIZE * sizeof(foo*));
  int i;
  for(i = 0; i < SIZE; i++)
    arr[i] = (foo*)malloc(sizeof(foo));
  arr[1]->i = 1;
  printf("Before %d\n",arr[1]->i );
  doSomething(&arr);
  printf("After %d\n",arr[1]->i );
  return 0;
}
void doSomething(foo ***arr)
{
  (*arr[1])->i = 3;
}
 
     
     
    