wskaznik przekaz po prostu poprzez referencje.
Dobra do konkretow. Nie wiem w prawdzie dokladnie czego oczekujesz, ale dynamiczne tworzenie tablic juz masz opisane. Wazne jest jeszcze to, ze nie mozesz do takiej tablicy nic pozniej dokleic, ale i tak mozliwosc stworzenia tablicy o potrzebnym rozmiarze jest niezla mozliwoscia.
Rozumiem, ze w main masz wskaznik np. char*, zas chcesz, aby funkcja przypisala mu spojny obszar danych o komorkach o stalej wielkosci, czyli tablice i w ten sposob zwrocila wyniki swego dzialania. To jest niezwykle proste.
na poczatek sprawa przekazania wskaznika do funkcji:
a w miejscu wywolania:
W ten sposob mozliwa bedzie nie tylko modyfikacja pamieci wskazywanej przez wskaznik, ale takze samego adresu w nim zawartego.
Jesli zas chodzi o samo zwracanie wartosci itp. Jako, ze wynik dzialania funkcji bedzie przekazany poprzez dynamicznie utworzona tablice, totez nie ma potrzeby zwracania jakiejkolwiek wartosci przez funkcje i moze byc ona typu void. Jesli jednak nie mamy z gory okreslone jak wiele bedzie wynikow w tablicy (no z jakiegos powodu tworzymy ja dynamicznie), to warto, aby poprzez funkcje zwrocic wymiar tej tablicy.
Oczywiscie zagadnienia programistyczne najlepiej obrazowac na przykladzie:
Kod: Zaznacz cały
...
int funkcja (char** a)
{
int ile;
printf("podaj ile bedzie znakow
");
scanf("%d",&ile);
a=(char*)malloc(ile*sizeof(char));
for(int i=0;i<ile;i++) scanf("%c",&a[i]);
return ile;
}
mam nadzieje, ze nie popelnilem bledu. Jeszcze tylko slowko objasnienia. Nie wiemy ile znakow wpisze uzytkownik, jednak on sam sie deklaruje podajac ich liczbe. Ta liczbe przekazujemy dalej poprzez funkcje, zas same znaki sa w tablicy i nie trzeba ich zwracac do miejsca wywolania, poniewaz zmiany byly dokonywane na faktycznej tablicy, a nie na jej kopii lokalnej na potrzeby funkcji