ฉันคิดว่าสิ่งนี้ถูกต้องและอาจช่วยได้ อย่าลังเลที่จะแก้ไขหากคุณพบข้อผิดพลาด ฉันใหม่ที่ 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++