вернуть несколько значений из функции в C [duplicate]

На этот вопрос уже есть ответ здесь:

Указатель теряет свое значение + предупреждение компиляции execv 1 ответ

Моя первоначальная проблема заключается в том, что я хочу написать функцию, которая может возвращать мне два значения. Я знаю, что могу сделать это, передав адрес двум аргументам функции и непосредственно вычислив их значения внутри этой функции. Но при проведении эксперимента происходит нечто странное. Значение, которое я получил внутри функции, не может дойти до основной функции:

#include 
#include 
#include 

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

Вышеуказанная программа просто выводит мусор. Итак, я хочу знать, чтоздесь не так. В конце концов, я хочу что-то вроде этогоparse(char **argv, char **cmd1, char **cmd2), который может разобрать две команды для меня из оригинальной команды argv. Было бы здорово, если бы кто-нибудь мог немного объяснить. Большое спасибо.

Ответы на вопрос(3)

Ваш ответ на вопрос