เหตุใดจึงถูกargv
ประกาศให้เป็น "ตัวชี้ไปยังตัวชี้ไปยังดัชนีแรกของอาร์เรย์" แทนที่จะเป็น "ตัวชี้ไปยังดัชนีแรกของอาร์เรย์" ( char* argv
)
เหตุใดจึงต้องใช้แนวคิดของ "ตัวชี้ไปยังตัวชี้"
char* argv[]
วางพื้นที่ในตำแหน่งที่ผิด พูดchar *argv[]
และตอนนี้มันชัดเจนว่านี่หมายถึง "การแสดงออก*argv[n]
เป็นตัวแปรประเภทchar
" อย่าพลาดในการพยายามหาว่าตัวชี้คืออะไรและตัวชี้ไปยังตัวชี้เป็นต้น การประกาศกำลังบอกคุณว่าการดำเนินการที่คุณสามารถทำได้กับสิ่งนี้คืออะไร
char * argv[]
กับโครงสร้าง C ++ ที่คล้ายกันstd::string argv[]
และอาจแยกวิเคราะห์ได้ง่ายขึ้น ... อย่าเพิ่งเริ่มต้นเขียนมันแบบนั้นจริงๆ!
char &func(int);
ซึ่งไม่ได้ทำให้มีประเภท&func(5)
char
char* argv[]
char**
นั่นคือตัวชี้ไปยังตัวชี้ไปยังตัวละคร โดยเฉพาะจุดตัวชี้ด้านนอกชี้ไปที่ตัวชี้แรกในอาร์เรย์และตัวชี้ภายในชี้ไปที่อักขระตัวแรกของสตริงที่สิ้นสุดด้วย nul ไม่มีดัชนีที่เกี่ยวข้องที่นี่