ถ้า
printf("%p",pt_num); // ค่าที่ได้เป็น address ของ ตัวแปร num
แล้วถ้าอยากรู้ว่าaddress ของพอยเต้อเป็นอะไร จะต้องใช้คำสั่งอะไรเหรอครับ
ไม่รู้จะผ่านหรือเปล่านะครับ &pt_num
ต้องหา gcc มาลงมั่งแล้ว
ถูกแล้วครับ ถ้าต้องการทราบแอดเดรสของตัวแปรก็เอาเครื่องหมาย & ไว้หน้าตัวแปร แล้วแสดงออกมา ไม่ว่าตัวแปรนั้นจะเป็น Pointer อาร์เรย์ หรือว่าตัวแปรธรรมดาก็ตาม
ผมคิดว่า ตามข้างบนนะมั้ง
แต่ถ้าตามข้างบนผมก็ไม่รู้ว่าจะแสดงระหัสควบคุมการแสดงผลเป็นอะไรดี สงสัยว่าจะเป็น %x มั้ง หรือ %p
ซึ่งก็น่าจะได้ตามบรรทัดนี้ >> printf("%x",&pt_num); มั้ง
ส่วน %p เป็นการแสดงผลควบคุมของ pointer ผมไม่แน่ใจว่าถ้า printf("%p",num); แบบนี้จะได้หรือเปล่า
สรุปคือถ้าผมต้องการรู้ตำแหน่งของตัวแปร pt_num
ผมจะทำอย่างนี้
โดยใช้ Indirect pointer ซึี่งก็คือตัวแปร pointer ซ้อน pointer
รูปแบบคือ type **pointer;
โดย type ต้องเป็นชนิดเดียวกับตัวแปร pointer ที่ต้องการหาตำแหน่งที่อยู่ ในที่นี้คือ int
ผมจะเขียนโค้ดใหม่ว่า
#include<stdio.h>
main()
{
int num=100;
int *pt_num; // เป็นการกำหนดว่าตัวแปร pt_num เป็น pointer ชนิดข้อมูลแบบ int
int **ptt_num;//เป็นการกำหนดว่าตัวแปร ptt_num เป็น indirect pointer ชนิดข้อมูลแบบ intpt_num=# // เป็นการให้ค่า ที่อยู่ของ ตัวแปร num ให้กับ ตัวแปร pt_num
ptt_num=&pt_num;// เป็นการให้ค่า ที่อยู่ของ ตัวแปร pt_num ให้กับ ตัวแปร ptt_numprintf("%d",pt_num); //
ค่าที่ได้เป็นค่าเดียวกับ num คือ 100ค่าที่ได้คือ address ของ num ในการแสดงผลออกมาในรูปจำนวนเต็ม
printf("%p",pt_num); // ค่าที่ได้เป็น address ของ ตัวแปร num
printf("%p",ptt_num);// ค่าที่ได้เป็น address ของ ตัวแปร pt_numprintf("%p",num); // ค่าที่ได้เป็น address ของ ตัวแปร num เช่นกัน <== ตรงนี้ไม่แน่ใจนะ
}