2016-04-13 5 views
-2

Die Speicheradresse jedes Element eines Arrays alsAusgabespeicher Adressen von malloc

int first[4], n=4; 
for(int i=0;i<n;i++){ 
    cout<<"first#" <<i<<" "<<&first[i]<<endl; 
} 

angezeigt möchte ich fragen, wie die Adresse jedes Elements zur Ausgabe zugeordnet malloc?

int *first = (int *) calloc(n, sizeof(int)); 
+1

Kann auf genau die gleiche Weise erfolgen. – kaylum

+2

gibt es keine "cout" in ** C **. –

Antwort

0

Ihr Code könnte genau die gleiche Art und Weise der malloc zugewiesenen Speicher ausgegeben werden.

Oder Sie könnten wie unter dem der Zeiger Art und Weise tun:

int *array; 
array=malloc(4*sizeof(int); 
for(int i=0;i<4;i++) 
    printf("Address %d : %p\n",i,(array+i)); 

Welchen Unterschied würde man denken, es macht, wenn der Speicher automatisch zugeordnet wird oder manuell (wie in malloc)?

+1

Diese Antwort auf SO [link] (http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc/605858#605858) zeigt ziemlich stark an, dass malloc nicht gegossen werden sollte. Array = malloc (4 * sizeof (int)); – anita2R

+0

@ anita2R: Ich stimme zu..Made eine Bearbeitung hier ... – sjsam

+0

@ anita2R OP verwendet anscheinend C++, aber falsch markierte Frage, so malloc müsste dort besetzt werden. Wenn Sie diesen ganzen Link lesen, dann ist 'malloc (4 * sizeof * array);' das empfohlene Formular. Das Entfernen von Cast, ohne auch die 'sizeof' zu ändern, macht den Code schlechter, indem die Fehlerprüfung entfernt wird. –