[c++] przekazanie tablicy do funkcji - czemu działa?

0

Witam,
mam pytanie do tego co ponizej, jak to jest , że to działa - chodzi mi o przekazanie tablicy do funkcji. To co poniżej to była moja odpowiedz na zadanie na policzenie z wykorzystaniem funkcji sumy pod główną przekątna w statycznej tablicy dowolnie kwadratowej. Na kolokwium się śpieszyłem wiec na łapucapu napisałem co napisałem. Prawie działało. W domu uwzględniłem, że pierwszym indeksem tablicy jest 0 a nie 1 :) i zadziałało. Patrze na to jednak teraz i nie rozumiem, jak to działa - nie zadeklarowałem wskaźnika wiec rozumiem, że tablica jest parametrem formalnym. A w takiej systuacji, powiniem przy przekazaniu do funkcji podac przynajmnie drugi wymiar? I czemu działa przekazanie do funkcji przy użyć operatora wyłuskania a nie wskazania adresu?

int licz(int tab,int ile){
int i=0,w,n=1,k=1,suma=0;
w=sqrt(float(ile));
while (i<ile){
if(i==(w
n+k)-1){
n++;
k++;
suma=suma+tab[i];}
i++;}
return suma;
}

int _tmain(int argc, _TCHAR* argv[])
{
const int w=4,k=4;
int a,tab[w][k],wynik;

srand(NULL);
a=rand()%10;

for (int i=0; i<w; i++)
	for (int j=0;j<k;j++)
		tab[i][j]=rand()%10;

wynik=licz(*tab,w*k);
cout<<"suma = "<<wynik;
_getch();
return 0;

}

Z gory dziekuje i pozdrawiam,
Tomek

0

Bo przekazujesz wskaźnik na element tab[0][0] do funkcji. Jednak ja bym uważał z takimi funkcjami bo one będą działać tylko i wyłącznie jeśli funkcja będzie zadeklarowana ze stałym rozmiarem, jeśli będzie dynamiczna to wszystko pójdzie w PiSdu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1