- C Helpdesk http://www.chelpdesk.pun.pl/index.php - Algorytmy http://www.chelpdesk.pun.pl/viewforum.php?id=3 - [C] Przekazywanie tablic dwuwymiarowych do funkcji. http://www.chelpdesk.pun.pl/viewtopic.php?id=22 |
mieczyk - 04-12-2007 20:26:27 |
Dwa poniższe przykłady prezentują przekazywanie tablicy dwuwymiarowej do funkcji. Pierwszy przykład jest mało elegancki, ponieważ z góry znamy rozmiar tablicy. Drugi natomiast opiera się o dynamiczną alokację pamięci. Kod:/* Przekazywanie tablicy dwuwymiarowej do funkcji */ /* Sposob I */ #include <stdio.h> #include <stdlib.h> void wyswietl(int tab[][2], int x, int y) { int i,j; for(i=0; i<x; i++) for(j=0; j<y; j++) printf("%d\n", tab[i][j]); } int main() { int tab[3][2]; int i,j; int x=3; int y=2; srand(time(0)); for(i=0; i<x; i++) for(j=0; j<x; j++) tab[i][j] = rand()%100; wyswietl(tab, x, y); getchar(); return 0; } II przykład: Kod:/* Przekazywanie tablicy dwuwymiarowej do funkcji */ /* Sposob II */ #include <stdio.h> #include <stdlib.h> void wyswietl(int **tab, int x, int y) { int i,j; printf("Tablica %dx%d\n\n", x,y); for(i=0; i<x; i++) { for(j=0; j<y; j++) printf("%d ", tab[i][j]); printf("\n"); } } int main() { srand(time(0)); int **tab; int i,j; /* Losowanie wymiarow tablicy */ int x = 1+rand()%20; int y = 1+rand()%20; /* Alokowanie potrzebnej pamięci */ tab = (int**)malloc(x*y*sizeof(int*)); for(i=0; i<x; i++) tab[i] = (int*)malloc(y*sizeof(int)); /* Wypelnianie tablicy losowami liczbami */ for(i=0; i<x; i++) for(j=0; j<y; j++) tab[i][j] = rand()%100; /* Wyswietlanie tablicy */ wyswietl(tab, x, y); /* Zwalnianie pamieci */ for(i=0; i<x; i++) free(tab[i]); free(tab); getchar(); return 0; } Tutaj jednak, nie jestem pewien czy dobrze zwalniam pamięć. Jeżeli nie, zawsze można mnie poprawić... :) |