PDA

Tam Sürümünü Görmek İçin : C'de ufak bir soru?


coderhasan
27/02/2007, 19:11
C ile programlamaya yeni basladim kodu

satir satir anlamak istedigim için şurda

takildim

main()
int main()
int main(int argc, char *argv[])


bunlar arasındaki fark nedir?Ben hep main()

ile baslıyan programlar yazıyorum.Bu

parentezler içinde neler tanımlanıyor?Daha

sonra programın hangi aşamalarında

kullanlıyor?Birde parametreli program

kullanımı nasil olur?Bu parentezler icinde

nereler tanımlanabilir?

mesala windowsta dizin listeleme dir

paremetreli kullanım dir /p gibi unix'te ls

paremetreli ise ls -all gibi


iyi günler


acehreli
27/02/2007, 20:17
main'in iki tane standart bildirimi vardir. Derleyiciler ek olarak baskalarini da sunabilirler:

1) "int main()" program parametreleriyle ilgilenmedigimiz zaman kullanilir

2) "int main(int argc, char * argv[])" program parametreleri onemli oldugunda kullanilir

Ek olarak sunulan yaygin bir baska main:

3) "int main(int argc, char * argv[], char * envp[])" programin calistigi ortamdaki degiskenlere (environment variables) erismek istendiginde kullanilir

main'in aldigi parametre adlarini tabii ki kendimiz baska sekilde yazabiliriz ama sunlar cok yaygin olarak kullanilirlar:

argc: Program adi da dahil olmak uzere program parametresi adedi. (Adi "argument count"un kisaltmasidir.)

argv: O parametreleri barindiran dizi. (Adi "argument vector"den gelir.)

envp: Ortam degiskenlerini barindiran dizi. (Adi *herhalde* "environment variable pointer"dan gelir.)

Bunlari gostermek icin hep suna benzer bir program kullanilir:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char * argv[], char * envp[])
{
printf("--- Komut satirinda %d adet sozcuk vardi: ---\n", argc);

for (int i = 0; i != argc; ++i) {
printf("%3d: %s\n", i, argv[i]);
}

printf("\n --- Bu ortamda su degiskenler var: ---\n");

for (int i = 0; envp[i] != NULL; ++i) {
printf("%s\n", envp[i]);
}

// Adlari bilinen ortam degiskenlerine getenv() islevi ile de erisilebilir:
printf("--- path'in degeri su: ---\n");
printf("%s\n", getenv("path"));

return 0;
}

Ali