zwraca wiele wartości z funkcji w C [duplikat]

To pytanie ma już tutaj odpowiedź:

Wskaźnik traci swoją wartość + ostrzeżenie kompilacji execv 1 odpowiedź

moim pierwotnym problemem jest to, że chcę napisać funkcję, która może zwrócić mi dwie wartości. Wiem, że mogę to zrobić, przekazując adres dwóch argumentów do funkcji i bezpośrednio obliczając ich wartości wewnątrz tej funkcji. Ale podczas eksperymentu dzieje się coś dziwnego. Wartość, którą dostałem wewnątrz funkcji, nie może przetrwać do głównej funkcji:

#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);
}

Powyższy program wypisuje tylko śmieci. Chcę wiedzieć, co tu jest nie tak. W końcu chcę czegoś takiegoparse(char **argv, char **cmd1, char **cmd2), które mogą przetworzyć dla mnie dwa polecenia z oryginalnej komendy argv. Byłoby wspaniale, gdyby ktoś mógł trochę wyjaśnić. Wielkie dzięki.

questionAnswers(3)

yourAnswerToTheQuestion