Soalan:
Apabila menyampaikan hujah kepada fungsi utama dalam program C atau C, adakah argv[0] sentiasa mengandungi nama boleh laku? Atau adakah ini hanya amalan biasa yang mungkin tidak berlaku dalam semua kes?
Jawapan:
Mengikut piawaian ISO C11:
Jika nilai argc lebih besar daripada sifar, rentetan ditunjuk oleh argv[0] mewakili nama program; argv0 hendaklah menjadi aksara nol jika nama program tidak tersedia daripada persekitaran hos.
Oleh itu, tidak semestinya argv[0] akan mewakili nama sebenar boleh laku. Sebaliknya, ia adalah nilai yang ditentukan pelaksanaan yang disediakan oleh persekitaran hos dan mungkin tidak semestinya nama fail boleh laku.
Standard ISO C selanjutnya menyatakan bahawa jika argc lebih besar daripada sifar, ahli tatasusunan argv[ 0] melalui argv[argc-1] akan mengandungi penunjuk kepada rentetan dengan nilai yang ditentukan pelaksanaan yang ditentukan oleh persekitaran hos sebelum program bermula.
Ini bermakna nilai argv[0] tidak dinyatakan secara eksplisit oleh standard, membenarkan variasi dalam tingkah laku merentas platform dan sistem pengendalian yang berbeza.
Atas ialah kandungan terperinci Adakah `argv[0]` Sentiasa Mengandungi Nama Boleh Laku dalam C/C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!