Sualimi cavablandirdiginiz ucun tesekkur edirem
Salam. Mən belə başa düşdüm ki, sizin sualınız argc və argv arqumentlərinin məqsədləri yox, argv arqumentinin tipi ilə bağlıdır. argv -nin tipi char *[] və ya char ** kimi göstərili. Sizin sualınız belədir ki, niyə char [] və ya char * tiplərindən istifadə olunmur. Bu iki tipin fərqini anlamağa çalışaq. Mən izahı daha başadüşülən olsun deyə int tipi üzərindən verəcəm, char tipi də analojidir.
int tipindən hər-hansı bir x dəyişəni elan edək:
[code] int x;[/code]
indi isə int tipindən hər-hansı p adlı göstərici elan edək:
[code] int *p;[/code]
indi int tipindən 10 elementdən ibarət y adlı array elan edək:
[code]int y[10];[/code]
Göstəricilər ilə arrayin əlaqəsini nəzərə alıb deyə bilərik ki, y -in tipi ilə p -nin tipi eynidir yəni int *
İndi isə sizin üçün əhəmiyyətli məqam, int tipindən olan 10 göstərici saxlayan hər-hansı z arrayi elan edək:
[code] int * z[10];[/code]
Burada da arraylərlə göstəricilərin əlaqəsini nəzərə alsaq z arrayinin tipini int ** kimi yaza bilərik, yəni göstərici tipli göstərici. Bu göstəricilərlə bağlı ən çətin hissələrdən biridir.
Qayıdaq sizin suala. char *s; hər-hansı sətirdir, başqa sözlə simvollar arrayi. argv isə səritlər arrayi dir. Buna görə yazırıq char * argv[]; arraylərin göstəricilərlə əlaqəsin nəzərə alıb bunu char **argv kimi də yaza bilərik.
Burda izah olunub.