Array, Zeiger auf int, calloc ...
-
Hallo!
Ich hab folgendes Programm geschrieben:
#include <stdio.h> #include <stdlib.h> int main(void) { int * array; array=(int*)calloc(3,sizeof(int)); int feld[]={233,5,3}; for(int i=0;i<3;i++) *array = feld[i]; printf("%d %d %d\n ",array[0],array[1],array[2]); free (array); return 0; }
Doch leider gibt mir der Bildschirm 3 0 0 und nicht 233 5 3 aus. Was hab ich falsch gemacht? ! Es muss wohl am Speicherplatz liegen oder?
-
Hi
soweit ich weiss soll man den Rückgabewert von malloc/calloc nicht casten.
Wenn du die for-Schleife so änderst funktionierts
for (i = 0; i < 3; i++) array[i] = feld[i];
Das muss array[i] sein, weil du sonst immer in Element 0 reinkopierst.
Und am Anfang von main nicht int i vergessen.
Mein Compiler gibt nämlich bei for (int i ...) eine Warnung aus.
mfg higret
-
higret schrieb:
Mein Compiler gibt nämlich bei for (int i ...) eine Warnung aus.
Dann ist er veraltet.
-
Oder du machst es so:
int *copy = array;
for(int i=0;i<3;i++) { *copy = feld[i]; copy++; }
-
SG1 schrieb:
higret schrieb:
Mein Compiler gibt nämlich bei for (int i ...) eine Warnung aus.
Dann ist er veraltet.
Warnen darf er, soviel er möchte.
-
Daniel E. schrieb:
Warnen darf er, soviel er möchte.
Hast ja Recht, hab Fehler gelesen...
-
Er kann ja trotzdem veraltet sein. Das eine hat mit dem anderen nichts zu tun.
-
hi,
veraltet ist mein Compiler nicht, es ist der Gcc 3.3 unter SuSe Linux 8.2
mfg higret