Witam
Ciągle ucieka mi pewna kwestia związana ze wskaźnikami. Sprawa zapewne prosta, ale byłbym wdzięczny za wyjaśnienie co i jak.
Przyjmijmy, że mamy funkcję zwracającą listę stringów (nie mogę jej zmienić):
char** foo(int *count);
Funkcja ta przyjmuje jako argument wskaźnik do inta, w którym umieszczona zostanie liczba stringów w tablicy.
Taki kod działa bez zarzutu:
int main(void) {
char **array;
int count, i;
array = foo(&count);
for ( i = 0; i < count; i++ ) {
fprintf(stdout, "- %s\n", array[i]);
};
return 0;
};
Teraz, wywoływanie funkcji foo() chcę przenieść do oddzielnej funkcji, która coś tam będzie rzeźbić i ma zwrócić rzeczoną tablicę przez argument. Jak jednakże zdefiniować taką funkcję? Funkcja ma zwracać int.
To się kompiluje, ale dostaje SEGFAULT między oczy:
int bar(char **array, int *count) {
array = foo(count);
return 56; // liczba dobra, jak każda inna
};
// ...
int main(void) {
char **array;
int result, count;
result = bar(array, &count);
};
O ile pojmuję dobrze, po wyjściu z funkcji bar() to, na co wskazuje array już nie istnieje, stąd SEGFAULT (dobrze mi się wydaje?).
Jak zatem to ugryźć?
P.S. Nie, to nie jest zadanie na zaliczenie ;)