Pisałem kod, który wymaga obsługi tablicy 2D o wymiarach [101] X [101] w C. Jednak jestem ograniczony pod względem pamięci używanej w danym momencie.Zarządzanie pamięcią podczas wywołania funkcji
void manipulate(int grid_recv[101][101])
{
//Something
}
void main()
{
int grid[101][101];
manipulate(grid);
}
Więc powiedzmy, że tworzę tablicę siatkę [101] [101] w moim main() a następnie przekazać go do manipulacji do innej funkcji. Teraz jest funkcja manipulować() skopiować całą macierz siatkę w grid_recv tj przez tego rodzaju przejścia używam dwukrotnie ilość pamięci (czyli dwukrotnie większy od siatki)?
Więc co to znaczy, że nawet jeśli otrzymam tablicę jako grid_recv [101] [101] (a nie int ** grid_recv), nadal otrzymuję wskaźnik? Więc w jaki sposób rozmiar macierzy jest włączony do obrazu? – Dubby
@Dubby Tak, chodzi mi o to, że nie ma możliwości przekazania tablicy jako parametru w C. Nie jestem pewien, o co pytasz, ale jeśli potrzebujesz funkcji tablicy w funkcji, musisz ją przekazać jako dodatkowy argument. – chrk
Dzięki! To odpowiada na moje pytanie :) I ostatnie pytanie: jak zdecydować, kiedy użyć reprezentacji int ** arr i reprezentacji int arr [n] [n] do zainicjowania tablicy 2D? Czy też C pozwala na inicjowanie tablic o zmiennych rozmiarach? – Dubby