พอยน์เตอร์ดิบและตัวดำเนินการหาที่อยู่
ประกาศพอยน์เตอร์ หาที่อยู่ด้วย & และทำความเข้าใจชนิดของพอยน์เตอร์
พอยน์เตอร์ดิบและตัวดำเนินการหาที่อยู่ เป็นบทเรียน C++ Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C++ Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C++ Academy มีบทเรียนทั้งหมด 4 บทเรียน
พอยน์เตอร์คืออะไร
pointer เก็บที่อยู่ของวัตถุอื่น เป็นตัวแปรที่มีค่าคือ ตำแหน่งในหน่วยความจำ
การประกาศพอยน์เตอร์
ชนิดของ pointer คือ T* โดยทั่วไปให้วาง * ไว้ติดกับชนิดข้อมูล
int x = 10;
int* p = &x; // p holds the address of x
std::cout << p; // prints an address
std::cout << *p; // prints 10ตัวดำเนินการหาที่อยู่
& แบบเอกภาคใช้หาที่อยู่ของตัวแปร ผลลัพธ์มีชนิดเป็น T*
int x = 42;
int* p = &x;ตัวดำเนินการยกเลิกการอ้างอิง
* แบบเอกภาคใช้อ่านหรือเขียนวัตถุที่ pointer ชี้อยู่
*p = 100;
std::cout << x; // 100 (x changed through p)พอยน์เตอร์ค่าว่าง
pointer ที่ไม่ได้ชี้ไปยังสิ่งใดควรกำหนดให้เป็น nullptr การยกเลิกการอ้างอิง pointer ดังกล่าวเป็นพฤติกรรมที่ไม่ได้กำหนด
int* p = nullptr;
if (p == nullptr) {
std::cout << "no target\n";
}พอยน์เตอร์คือจำนวนภายในระบบ
ที่อยู่เป็นเพียงจำนวนเต็ม (มักมีขนาด 64 บิต) ชนิดของ pointer จะบอกคอมไพเลอร์ว่าควรตีความไบต์ที่อยู่ ณ ตำแหน่งนั้นอย่างไร
Pointer ไปยัง const กับ const Pointer
ตำแหน่งของ const มีอยู่สองแบบที่เป็นอิสระต่อกัน:
int x = 1, y = 2;
const int* p1 = &x; // pointer to const int (cannot modify *p1)
int* const p2 = &x; // const pointer to int (cannot reseat)
const int* const p3 = &x; // bothขนาดพอยน์เตอร์
พอยน์เตอร์ทั้งหมดมีขนาดเท่ากันบนแพลตฟอร์มเดียวกัน — โดยทั่วไปคือ 8 ไบต์ในระบบ 64 บิต แม้แต่ char* ก็มีความกว้าง 64 บิต
พอยน์เตอร์ฟังก์ชัน
คุณสามารถรับที่อยู่ของฟังก์ชัน แล้วเรียกฟังก์ชันนั้นผ่านพอยน์เตอร์ได้
int square(int x) { return x * x; }
int (*fp)(int) = □
std::cout << fp(5); // 25พอยน์เตอร์ไปยังสมาชิก
มีไวยากรณ์พิเศษสำหรับพอยน์เตอร์ไปยังสมาชิกของคลาส ซึ่งพบไม่บ่อยในโค้ดสมัยใหม่ — การเรียกกลับส่วนใหญ่ใช้ std::function หรือนิพจน์แลมบ์ดาแทน
เหตุผลที่พอยน์เตอร์สำคัญ
พอยน์เตอร์เป็นพื้นฐานของสิ่งต่อไปนี้:
- หน่วยความจำแบบไดนามิก (
new/deleteหรือพอยน์เตอร์อัจฉริยะ) - การอ้างอิงที่มีหรือไม่มีได้ (เป็นค่าว่างได้)
- พหุรูปแบบ (การเลือกเรียกแบบเสมือนผ่านพอยน์เตอร์ไปยังคลาสฐาน)
- การทำงานร่วมกับอินเทอร์เฟซ API ของ C
ตรวจสอบความเข้าใจ
นิพจน์ &x ให้ผลลัพธ์เป็นอะไร
สรุปทบทวน
พอยน์เตอร์เก็บที่อยู่ ใช้ & เพื่อรับที่อยู่ และใช้ * เพื่ออ่านหรือเขียนค่าที่เป้าหมาย nullptr เป็นค่าว่างสำหรับพอยน์เตอร์ที่ปลอดภัย พอยน์เตอร์เป็นพื้นฐานของหน่วยความจำแบบไดนามิก การอ้างอิงที่มีหรือไม่มีได้ และพหุรูปแบบ
คำถามที่พบบ่อย
บทเรียน “พอยน์เตอร์ดิบและตัวดำเนินการหาที่อยู่” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “พอยน์เตอร์ดิบและตัวดำเนินการหาที่อยู่” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C++ Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C++ Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “พอยน์เตอร์ดิบและตัวดำเนินการหาที่อยู่”
ประกาศพอยน์เตอร์ หาที่อยู่ด้วย & และทำความเข้าใจชนิดของพอยน์เตอร์ คุณปฏิบัติ C++ Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C++ Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน C++ Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “พอยน์เตอร์ดิบและตัวดำเนินการหาที่อยู่” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน C++ Academy นี้ได้ไหม
ได้ บทเรียน C++ Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- พอยน์เตอร์ดิบและตัวดำเนินการหาที่อยู่
- การถอดค่าพอยน์เตอร์และเลขคณิตของพอยน์เตอร์
- nullptr และความปลอดภัยของพอยน์เตอร์ว่าง
- เมื่อใดควรใช้พอยน์เตอร์หรือรีเฟอเรนซ์