Der ursprüngliche Code würde nicht wirklich funktionieren, wenn ein NULL-Handle (Zeiger auf einen Zeiger) als Verweis übergeben wird. Es würde also nicht viel Sinn machen, all das Zuweisungsgeschäft innerhalb von foo() zu tun: Wenn foo() nicht endgültig zurückgibt, ist es außerhalb von foo() nicht verwendbar, es sei denn, bereits initialisiert, IMHO. Dann würde der Handle Sinn machen, foo() nimmt die Adresse der zweiten Zeichenfolge als Argument und muss sie nicht zurückgeben. Lassen Sie uns dieses Beispiel-Code betrachten, basierend auf der ursprünglichen Nachricht (Debug-Drucke enthalten):
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void foo(const char * string, char ** final)
{
(*final) = (char *)malloc(n+1);//we deference the address to reach and size the variable
printf("From foo: ");
for (unsigned long i = 0; i < strlen(string); ++i)
{
(*final)[i] = string[i];
printf("%c",(*final)[i]);
}
printf("\n");
}
nehmen wir an, foo() von einer anderen Funktion in der folgenden Art und Weise aufgerufen wird, der Einfachheit halber:
int main(int argc, const char * argv[])
{
char *fin;
char *str = "string";
foo(str, &fin);
printf("From main: ");
for(unsigned long j = 0; j < strlen(fin); j++)
printf("%c", fin[j]);
printf("\n");
return 0;
}
Es würde funktionieren, aber wofür? Es gibt einfachere Mittel, um das gleiche Ergebnis zu erreichen, IMHO. Hoffe, das kann helfen.
'Ergebnis' ist nicht deklariert. – EOF
Welchen Fehler gibt Ihnen der Compiler? –
Bitte lernen Sie wie ein Programmierer zu denken: Sagen Sie nicht _error here_. Erklären Sie alle Details, die Sie bisher über den Fehler haben. Und dann nach mehr Details suchen. Ich kann sehen, dass Sie einen Kompilierungsfehler haben, aber, gute Trauer; Wie ist _error here_ hilfreich? –