Arrays dynamisch in Subroutinen alloziieren
-
Hallo,
Ich möchte gerne in einer Subroutine Speicher dynamisch erzeugen, dann den Pointer zurückgeben und auf die Elemente des Arrays zugreifen können.
Hier der Code, den ich probiert habe:
#include "stdafx.h" #include <stdlib.h> #include <malloc.h> #include <string.h> int DirCurrentPath(int** pi) { if ( (*pi = (int*) malloc( :p sizeof(int))) == NULL) return -1; *pi[0] = 10; *pi = (int*) realloc(*pi, 2 * sizeof(int)); *pi[1] = 20; return 0; } int main(int argc, char* argv[]) { int* ptest; ptest = NULL; DirCurrentPath(&ptest); printf("first integer: %d\n", ptest[0]); printf("second integer: %d\n", ptest[1]); free(ptest); return 0; }
Wenn ich das Programm laufen lasse, bekomme ich folgende Ausgabe:
first intager: 10
second integer: -8421504541Meines erachtens sollte der 2. intager aber 20 sein. Wie krige ich das hin?
Danke für eure Hilfe. :p
-
[] geht vor *. Das ist aber nicht, was du willst, daher musst du Klammern setzen.
-
Danke für den Hinweis, geht aber trotzdem nicht!
Ich denke ich habe dich richtig verstanden:
[] geht vor *. Das ist aber nicht, was du willst, daher musst du Klammern setzen.
int DirCurrentPath(int** pi) { if ( (*pi = (int*) malloc( sizeof(int))) == NULL) return -1; *(pi[0]) = 10; //Hier Klammern gesetzt *pi = (int*) realloc(*pi, 2 * sizeof(int)); *(pi[1]) = 20; //Hier Klammern gesetzt return 0; }
-
Hey vielen Dank,
Blödsinn, hab die Klammern falsch gesetzt
sorry
jetzt geht es!!!!int DirCurrentPath(int** pi) { if ( (*pi = (int*) malloc( sizeof(int))) == NULL) return -1; (*pi)[0] = 10; //Hier Klammern gesetzt *pi = (int*) realloc(*pi, 2 * sizeof(int)); (*pi)[1] = 20; //Hier Klammern gesetzt return 0; }