ฉันคิดว่าสิ่งนี้ถูกต้องและอาจช่วยได้ อย่าลังเลที่จะแก้ไขหากคุณพบข้อผิดพลาด ฉันใหม่ที่ C.
char str[]
- อาร์เรย์ของค่าประเภทถ่านด้วยที่อยู่ของตัวเองในหน่วยความจำ
- อาร์เรย์ของค่าประเภทถ่านที่มีที่อยู่ของตัวเองในหน่วยความจำให้มากที่สุดเท่าที่อยู่ติดต่อกันเป็นองค์ประกอบในอาร์เรย์
รวมทั้งอักขระ null เลิกจ้าง'\0' &str, &str[0]และstrทั้งสามเป็นตัวแทนของตำแหน่งเดียวกันในหน่วยความจำซึ่งเป็นที่อยู่ขององค์ประกอบแรกของอาร์เรย์str
ถ่าน * strPtr = & str [0]; // การประกาศและการเริ่มต้น
หรือคุณสามารถแยกสิ่งนี้เป็นสองสิ่ง:
char *strPtr; strPtr = &str[0];
strPtr เป็นตัวชี้ไปที่ char
strPtr คะแนนที่อาร์เรย์ str
strPtr เป็นตัวแปรที่มีที่อยู่ของตัวเองในหน่วยความจำ
strPtr เป็นตัวแปรที่เก็บค่าที่อยู่ &str[0]
strPtr ที่อยู่ของตัวเองในหน่วยความจำแตกต่างจากที่อยู่หน่วยความจำที่เก็บ (ที่อยู่ของอาเรย์ในหน่วยความจำ aka & str [0])
&strPtr แสดงถึงที่อยู่ของ strPtr เอง
ฉันคิดว่าคุณสามารถประกาศตัวชี้ไปยังตัวชี้เป็น:
char **vPtr = &strPtr;
ประกาศและเริ่มต้นด้วยที่อยู่ของตัวชี้ strPtr
อีกวิธีหนึ่งคุณสามารถแยกเป็นสอง:
char **vPtr;
*vPtr = &strPtr
*vPtr ชี้ไปที่ตัวชี้ strPtr
*vPtr เป็นตัวแปรที่มีที่อยู่ของตัวเองในหน่วยความจำ
*vPtr เป็นตัวแปรที่เก็บค่าที่อยู่ & strPtr
- ความคิดเห็นสุดท้าย: คุณไม่สามารถทำ
str++, strที่อยู่เป็นconstแต่คุณสามารถทำได้strPtr++