Az alábbi program miért azt az értéket adja amit?
Nem tudok rájönni a mechanizmusára és elég fontos lenne megértenem. Tehát a program :
#include <stdio.h>
void f(char t[][8]){
while(**t) t++; t++;
while(**t) t++; t++;
printf("%c",**t);
}
void g(char t[][8], char s[], int i){ static int j=0;
if(i<4) g(t,s,i+1);
s[j++] = t[i][6];
if(!i) s[j]='\0';
}
int main(){
char a[][8]={
{'1', 0 ,'2', 0 ,'3', 0 ,'4'},
{ 0 ,'5','6','7','8','9', 0 },
{'a','b','c','d','e','f','g'},
{'h','i','j','k','l','m','n'},
{'o','p','q','r','s','t','u'},
{'A','B','C','D','E','F','G'},
{'H','I','J','K','L','M','N'},
{'O','P','Q','R','S','T','U'},
{},
{'V','X','Y','Z','W', 0 ,'0'},
};
char b[10];
f(a); g(a,b,0); printf("%s",b+1);
printf("\n"); system("PAUSE"); return 0;
}
És a kapott érték pedig:Vng
Előre is nagyon köszönöm a válaszokat!
Ha száraz tesztről beszélünk, akkor sajnos szép sorban végig kell mazsolázni.
Először is ezt érted-e: char a[][8]
Utána ezt érted-e: **t
Aztán jön az, hogy az f() függvény ciklusai pontosan min és hogyan, meddig futnak, hogyan helyezkedik el a tömb a memóriában, és hogy melyik t++ van a ciklusmagban.
A g() függvény aránylag egyszerű, csak látni kell, hogy rekurzív.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!