[0]zero-index clytie0x/zero-index

บทที่ 10 pointer

จบบทนี้ น้องจะรู้ว่าตัวแปรทุกตัวมีที่อยู่ในหน่วยความจำ และใช้ที่อยู่นั้นทำสิ่งที่บทก่อนๆ ทำไม่ได้ คือเขียนฟังก์ชันที่แก้ตัวแปรของคนเรียกได้ เช่น swap ที่สลับได้จริง ส่งผลกลับจากฟังก์ชันได้หลายค่า เดินบนอาเรย์และสตริงด้วย pointer ตัดสตริงหรือลบตัวอักษรในอาเรย์เดิมโดยไม่ต้องคัดลอก และจองอาเรย์ตามขนาดที่ข้อมูลเข้าบอกระหว่างรัน รวมถึงตารางที่แต่ละแถวยาวไม่เท่ากัน ใช้กับโจทย์ที่สั่งสลับข้อมูลตามคำสั่ง แยกข้อความเป็นท่อน และโจทย์ที่มีข้อมูลหลายชุดขนาดต่างกัน บทนี้ยังเฉลยเรื่องที่ค้างมาตั้งแต่บทที่ 1 ว่าทำไม scanf ต้องมี & และเป็นฐานของ struct ในบทที่ 11 กับ linked list ในบทที่ 14

ในบทนี้

หน้าได้อะไร
10.1 ที่อยู่และ pointerที่อยู่ในหน่วยความจำ & กับ * พิมพ์ที่อยู่ด้วย %p ชนิดของ pointer NULL และ pointer ที่ยังไม่ได้ชี้
10.2 ส่งที่อยู่ให้ฟังก์ชันswap ที่สลับได้จริง ส่งผลกลับหลายค่า ทำไม scanf ต้องมี & และห้ามคืนที่อยู่ของตัวแปรในฟังก์ชัน
10.3 pointer กับอาเรย์ชื่ออาเรย์คือที่อยู่ a[i] กับ *(a + i) บวกลบ pointer ส่งบางช่วงของอาเรย์ให้ฟังก์ชัน และ pointer สองตัวเดินเข้าหากัน
10.4 สตริงกับ char *%s กับที่อยู่ ฟังก์ชันที่คืน char * ตัดสตริงด้วย '\0' ลบตัวอักษรในอาเรย์เดิม และข้อความที่แก้ไม่ได้
10.5 จองหน่วยความจำด้วย mallocmalloc calloc free ตารางที่แต่ละแถวยาวไม่เท่ากัน pointer ชี้ pointer และหน่วยความจำรั่ว

ผ่านบทนี้เมื่อ