Initialisieren eines pointerss in einer separaten function in C

Ich muss eine einfache Sache machen, die ich in Java oft gemacht habe, aber ich stecke in C fest (reines C, nicht C ++). Die Situation sieht so aus:

int *a; void initArray( int *arr ) { arr = malloc( sizeof( int ) * SIZE ); } int main() { initArray( a ); // a is NULL here! what to do?! return 0; } 

Ich habe einige “Initialisierungs” -function, die einen bestimmten pointers auf einige zugewiesene Daten zuweisen sollte (spielt keine Rolle). Wie soll ich einen pointers auf eine function geben, damit dieser pointers geändert wird, und kann dann weiter im Code verwendet werden (nachdem dieser functionsaufruf zurückkehrt)?

Solutions Collecting From Web of "Initialisieren eines pointerss in einer separaten function in C"

Sie müssen den * a-pointers anpassen, das heißt, Sie müssen einen pointers auf das * a übergeben. Du machst das so:

 int *a; void initArray( int **arr ) { *arr = malloc( sizeof( int ) * SIZE ); } int main() { initArray( &a ); return 0; } 

Sie initArray arr by-value innerhalb von initArray , so dass jede Änderung des Werts von arr für die Außenwelt unsichtbar ist. Sie müssen arr nach pointers übergeben:

 void initArray(int** arr) { // perform null-check, etc. *arr = malloc(SIZE*sizeof(int)); } ... initArray(&a);