Ich habe den Zeiger erstellt und Speicher zugewiesen. Dieser Speicher sollte die Nummer enthalten, die ich im Array-Stil durchlasse (1 Zahl = 1 Element), außerdem ist das 0-Element die Größe der Zahl. Ich stehe jedoch vor dem Problem, Daten innerhalb des zugewiesenen Speichers mit einem Zeiger zu ändern. Wenn ich meinen Code in der Hauptfunktion verwende, läuft alles perfekt, aber wenn ich eine andere Funktion erstellt habe und einen Pointer-Wert im Inneren übergebe, kann ich ihn nicht speichern (wenn die Zahl größer als 99999 ist und 6 Elemente benötigt) gelagert).Mit Speicher zugeordneten Zeiger innerhalb der Funktion
Die Hauptfunktion:
int *convNum=NULL;
int main() {
int num;
convNum = malloc(sizeof(int));
if (convNum==NULL){
printf("Allocation error\n");
exit(0);
}
scanf("%d", &num);
convNum[0] = numLength(num);
printf("%d\n", convNum[0]);
convertNum(num, convNum);
for (int i = 1; i<=convNum[0]; i++){
printf("%d", convNum[i]);
}
printf("\n");
return 0;
}
Die Funktion, dass ich versuche,
zu verwendenint convertNum(int num, int * convNum){
int temp = num;
int size = convNum[0];
convNum = realloc(convNum, sizeof(int)*(size+1));
if (convNum==NULL){
printf("Allocation error\n");
exit(0);
}
for (int i=size;i>0;i--){
convNum[i] = temp % 10;
temp = temp/10;
}
return 0;
}
EDITED Die Ausgabe mit der Nummer Größe von weniger als 6 mir das Ergebnis gibt Ich brauchte. Die Ausgabe mit anderen Zahlen gibt mir eine defekte Größe (etwa -10349945820) und kein ordentliches Ergebnis.
Mögliche Duplikate von [C - Zeiger als Funktionsargumente] (https://stackoverflow.com/questions/18698317/c-pointers-as-function-arguments) –
Mögliche Duplikate von [C Programmierung: malloc() in einem anderen Funktion] (https://stackoverflow.com/questions/2838038/c-programming-malloc-inside-another-function) – melpomene