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.