สวัสดีครับ มาถึงบทที่ 3 ในบทนี้เราจะนำ ทฤษฏีในบทที่แล้ว มาทำการทดลองด้วย ภาษา C กันดู ว่าสิ่งที่เราเรียนรู้กันมาใน 2 บทแรกนั้น พอเขียน Source Code ภาษา C จริงๆ แล้ว ผลลัพธ์มันจะเป็นแบบที่เราเข้าใจไหม ทั้งเรื่อง Memory Address , Data , Data Type , Variables
โดยผมจะเขียนในโปรแกรม Dev-C++ ซึ่งเป็น Editor ตัวหนึ่งที่ใช้ในการเขียนภาษา C ถ้าใครอยากติดตั้งก็ตามลิ้งนี้ ได้เลยครับ หรือ จะใช้พวก Editor Online ทดสอบก็ได้นะ ได้ผลหลักการเดียวกัน !
Copy Source Code
#include <stdio.h>
int main()
{
int a = 1;
float b = 2.0;
char c = 'C';
printf("Data in Variable a : %d",a);
printf("Size of Variable a : %zu",sizeof(a));
printf("Size of Variable int : %zu",sizeof(int));
printf("Address of Variable a : %p", &a);
printf("Data in Variable b : %f",b);
printf("Size of Variable b : %zu",sizeof(b));
printf("Size of Variable float : %zu",sizeof(float));
printf("Address of Variable b : %p", &b);
printf("Data in Variable c : %c",c);
printf("Size of Variable c : %zu",sizeof(c));
printf("Size of Variable char : %zu",sizeof(char));
printf("Address of Variable c : %p", &c);
return 0;
}
ผลการ Run ด้วย Dev-C++ ในคอม
ผลการ Run ด้วย Editor Online ใน Web
อธิบาย Source Code เพิ่มเติม
printf("Data in Variable a : %d",a);
//แสดงผล ค่าในตัวแปร aprintf("Size of Variable a : %zu",sizeof(a));
// Function sizeof(ตัวแปร) ใช้สำหรับ หาขนาดของตัวแปรว่าตัวแปรนั้นกี่ Bytes ใช้ %zu ในการแสดงผลprintf("Size of Variable int : %zu",sizeof(int));
// Function sizeof(ตัวแปร) ใช้สำหรับ หาขนาดของตัวแปรว่าตัวแปรนั้นกี่ Bytes ใช้ %zu ในการแสดงผลprintf("Address of Variable a : %p", &a);
// & Ampersand Operator ถ้าใส่หน้าตัวแปร จะเป็นการดึง Address ของตัวแปรนั้นออกมา ! ใช้ %p ในการแสดงผล
ลองดูค่าต่างๆ ทั้ง ขนาดของชนิดข้อมูล (Data Type) และ Memory Address เปรียบเทียบด้วยรูปภาพ
สรุป 5 เรื่อง ? จากการทดลองนี้ เรารู้อะไรบ้าง ?
1) เราใช้ sizeof(ตัวแปร) หรือ sizeof(ชนิดข้อมูล) ในการหาว่ามีขนาดกี่ Bytes
2) เราใช้ & (Ampersand Operator) เพื่อดึง Memory Address ของตัวแปรได้
3) การเรียงลำดับกันของตัวแปรในหน่วยความจำ ทั้งในทฤษฏี ทั้งในคอม ทั้งใน Web สังเกตได้ว่า มีความต่างกัน แต่ประเด็นหลักของหัวข้อนี้คือ การใช้ sizeof() ดึงขนาด และ การใช้ & ดึง Memory Address เพื่อให้ดูว่ามันเก็บใน Memory จริง และมี Address จริงตามที่เราได้รู้มาใน 2 บทแรก !
4) เรา print ค่าจาก sizeof() ได้ด้วย %zu และ ค่าจาก & ได้ด้วย %p
5) Memory Address ที่เราดึงออกมานี่แหละ จะเกี่ยวกับ Pointer !
เอาล่ะครับ บทนี้เป็นยังไงกันบ้าง มีใครหลุดไปบ้างรึยัง ? นี่คือจุดเริ่มต้นก่อนที่จะไปเรื่องของ Pointer อย่างจริงจังแล้วล่ะ ! ถ้าไม่เข้าใจตรงไหนก็ลองเข้ามาสอบถามใน Page https://www.facebook.com/tutortongpage ได้เลยครับ
ส่วนถ้าใครสนใจเรียนเขียนโปรแกรม ภาษา C , C++ , Python หรืออื่นๆ ทั้งแบบออนไลน์คลิป และ ออนไลน์สด จะเรียนพื้นฐาน หรือ ติวสอบ สามารถสอบถามเข้ามาใน Page ได้เช่นกันครับ
เขียนโปรแกรม ไม่ยาก ถ้าเข้าใจหลักการทำงาน !