Rückgabe mehrerer Werte aus einer Funktion in C [duplizieren]

Diese Frage hat hier bereits eine Antwort:

Zeiger verliert seinen Wert + Warnung zur Kompilierung von execv 1 Antwort

Mein ursprüngliches Problem ist, dass ich eine Funktion schreiben möchte, die mir zwei Werte zurückgeben kann. Ich weiß, dass ich es tun kann, indem ich die Adresse der beiden Argumente an die Funktion übergebe und ihre Werte direkt in dieser Funktion berechne. Aber beim Experimentieren passiert etwas Seltsames. Der Wert, den ich in der Funktion erhalten habe, kann die Hauptfunktion nicht überleben:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void build(char *ch){
   ch = malloc(30*sizeof(char));
   strcpy(ch, "I am a good guy");
}

void main(){
   char *cm;
   build(cm);
   printf("%s\n", cm);
}

Das obige Programm druckt nur etwas Müll aus. Also möchte ich wissen, was hier los ist. Irgendwann möchte ich so etwasparse(char **argv, char **cmd1, char **cmd2), der für mich zwei Befehle aus dem ursprünglichen Befehl argv auslesen kann. Das wäre toll, wenn jemand etwas erklären könnte. Danke vielmals.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage