1. บทนำ
1.1 ความสำคัญของตัวแปรในภาษา C
ในภาษา C ตัวแปรเป็นองค์ประกอบสำคัญที่ใช้ในการเก็บและจัดการข้อมูลแบบไดนามิก การใช้ตัวแปรช่วยให้สามารถจัดการข้อมูลในโปรแกรมได้อย่างมีประสิทธิภาพ และสามารถเปลี่ยนแปลงหรือใช้งานข้อมูลเดิมซ้ำได้อย่างง่ายดาย โดยเฉพาะอย่างยิ่งในโปรแกรมขนาดใหญ่ การจัดการตัวแปรอย่างถูกต้องจะช่วยเพิ่มประสิทธิภาพและความเข้าใจในโปรแกรมโดยรวม
2. ตัวแปรคืออะไร?
2.1 การกำหนดตัวแปร
ตัวแปรคือพื้นที่หน่วยความจำที่ใช้เก็บข้อมูลชั่วคราวในโปรแกรม ในภาษา C จะต้องประกาศตัวแปรก่อนใช้งาน ตัวอย่างด้านล่างนี้เป็นการประกาศตัวแปร age
และเก็บข้อมูลอายุ 25 ลงไป
int age;
age = 25;
การใช้ตัวแปรช่วยให้สามารถนำข้อมูลมาใช้ซ้ำหรือแก้ไขค่าได้ง่ายขึ้น และช่วยให้โปรแกรมสามารถขยายหรือเปลี่ยนแปลงข้อมูลได้สะดวก
2.2 บทบาทของตัวแปร
ตัวแปรช่วยให้จัดเก็บและใช้งานข้อมูลซ้ำได้ เพิ่มความยืดหยุ่นให้กับโปรแกรม เช่น ในโค้ดต่อไปนี้ จะใช้ตัวแปรชนิด char
ในการแสดงข้อความ
char message[] = "こんにちは";
printf("%sn", message);
การใช้ตัวแปรเช่นนี้จะช่วยให้การจัดการข้อมูลเป็นเรื่องง่าย และสามารถเรียกใช้ข้อมูลเดียวกันในหลายส่วนของโปรแกรมได้อย่างมีประสิทธิภาพ
3. การประกาศและกำหนดค่าเริ่มต้นตัวแปร
3.1 วิธีประกาศตัวแปร
ในภาษา C ต้องประกาศตัวแปรก่อนนำมาใช้ การประกาศตัวแปรจะทำให้โปรแกรมจัดสรรพื้นที่ในหน่วยความจำสำหรับตัวแปรนั้น ตัวอย่างนี้เป็นการประกาศตัวแปรชนิดจำนวนเต็ม (int
) ชื่อ number
int number;
3.2 การกำหนดค่าเริ่มต้นให้ตัวแปร
ขอแนะนำให้กำหนดค่าเริ่มต้นให้กับตัวแปรตั้งแต่ตอนประกาศ เพราะหากใช้ตัวแปรที่ยังไม่ได้กำหนดค่าเริ่มต้น อาจทำให้โปรแกรมทำงานผิดพลาด ดังนั้นควรกำหนดค่าเริ่มต้นไว้เสมอ
int age = 30;
ตัวอย่างนี้ประกาศตัวแปร age
แบบจำนวนเต็มและกำหนดค่าเริ่มต้นเป็น 30 ปัญหาที่เกิดจากการใช้ตัวแปรที่ไม่ได้กำหนดค่าเริ่มต้นจะแนะนำในภายหลัง
4. ชนิดข้อมูลและข้อจำกัด
4.1 ชนิดข้อมูลหลักในภาษา C
ภาษา C มีชนิดข้อมูลหลายแบบ ควรเลือกชนิดข้อมูลให้เหมาะสมกับประเภทของข้อมูลที่จะจัดการ ตัวอย่างด้านล่างเป็นรายละเอียดของชนิดข้อมูลที่ใช้บ่อย
int
(จำนวนเต็ม): ใช้เก็บค่าจำนวนเต็ม ในระบบ 32 บิตจะเก็บค่าได้ตั้งแต่-2,147,483,648
ถึง2,147,483,647
โดยปกติจะเป็นเลขจำนวนเต็มที่มีเครื่องหมาย ตัวอย่าง:int age = 25;
double
(ทศนิยมแบบจุดลอยตัว): ใช้เก็บค่าตัวเลขที่มีทศนิยมdouble
จะรองรับค่าความละเอียดสูงประมาณ 15 หลัก และสามารถแสดงค่าที่มีขนาดใหญ่มากหรือน้อยมากได้อย่างแม่นยำ ตัวอย่าง:double pi = 3.14159;
char
(อักขระ): ใช้เก็บอักขระเดี่ยว ข้อมูลอักขระจะสัมพันธ์กับรหัส ASCII อยู่ในช่วง0
ถึง255
ตัวอย่าง:char grade = 'A';
4.2 ตัวอย่างการใช้งานและข้อควรระวังของแต่ละชนิดข้อมูล
การเลือกชนิดข้อมูลควรขึ้นอยู่กับช่วงค่าที่ต้องการจัดการและคุณสมบัติ เช่น char
จะใช้หน่วยความจำ 1 ไบต์ และสามารถแทนอักขระด้วยค่าตัวเลขได้ดังตัวอย่างนี้
char letter = 65;
printf("%cn", letter); // ผลลัพธ์: A
ตัวอย่างนี้จะแสดงอักขระ ‘A’ ตามรหัส ASCII 65 การใช้ชนิดข้อมูลที่ถูกต้องมีความสำคัญต่อเสถียรภาพและประสิทธิภาพของโปรแกรม

5. ขอบเขตการใช้งานตัวแปร (Scope)
5.1 ตัวแปรภายในฟังก์ชัน (Local) และตัวแปรทั่วโปรแกรม (Global)
ในภาษา C ขอบเขตของตัวแปรจะกำหนดว่าตัวแปรนั้นสามารถใช้งานได้ที่ไหน โดยแบ่งเป็นตัวแปรภายในฟังก์ชัน (Local) และตัวแปรทั่วโปรแกรม (Global)
- ตัวแปรภายในฟังก์ชัน (Local): ตัวแปรที่ประกาศภายในฟังก์ชันหรือบล็อก จะใช้ได้เฉพาะในขอบเขตนั้นเท่านั้น ไม่สามารถเข้าถึงจากฟังก์ชันหรือบล็อกอื่นได้
void example() {
int localVar = 10;
printf("%d", localVar); // ใช้งานตัวแปรภายในฟังก์ชัน
}
- ตัวแปรทั่วโปรแกรม (Global): ตัวแปรที่ประกาศนอกฟังก์ชัน จะสามารถใช้งานได้ทุกส่วนของโปรแกรม
int globalVar = 20;
void example() {
printf("%d", globalVar); // ใช้งานตัวแปรทั่วโปรแกรม
}
5.2 ความสำคัญของการจัดการขอบเขตตัวแปร
การใช้ตัวแปรภายในฟังก์ชันและตัวแปรทั่วโปรแกรมให้เหมาะสม มีผลต่อความเข้าใจง่ายและความปลอดภัยของโปรแกรม ตัวแปรทั่วโปรแกรมแม้จะสะดวกแต่ไม่ควรใช้บ่อย เพราะอาจนำไปสู่บั๊กในโปรแกรมได้ ควรใช้ในกรณีจำเป็นเท่านั้น
6. ตัวอย่างการใช้งานและแนวทางปฏิบัติที่ดี
6.1 การเปลี่ยนค่าและการนำตัวแปรมาใช้ซ้ำ
ค่าที่ถูกกำหนดในตัวแปรสามารถเปลี่ยนใหม่ได้ในภายหลัง ตัวอย่างโค้ดนี้แสดงการเปลี่ยนค่าในตัวแปร
int age = 20;
age = 21; // เปลี่ยนค่าใหม่
ตัวแปรช่วยให้โปรแกรมสามารถปรับเปลี่ยนค่าได้ตามขั้นตอนการทำงาน เพิ่มความยืดหยุ่นให้โค้ด
6.2 แนวทางการตั้งชื่อตัวแปร
การตั้งชื่อตัวแปรให้เข้าใจง่ายและสอดคล้องกับจุดประสงค์ของโปรแกรม จะช่วยให้โค้ดอ่านง่ายขึ้น ตัวอย่างแนวทางการตั้งชื่อที่นิยม
int userAge = 30; // แบบ camel case
int user_age = 30; // แบบ snake case
ชื่อตัวแปรควรสื่อความหมายและอธิบายบทบาทของตัวแปรในโปรแกรมอย่างชัดเจน
7. ข้อผิดพลาดที่พบบ่อยและวิธีแก้ไข
7.1 ข้อผิดพลาดจากการใช้ตัวแปรที่ยังไม่ได้กำหนดค่าเริ่มต้น
การใช้ตัวแปรที่ยังไม่ได้กำหนดค่าเริ่มต้น อาจทำให้โปรแกรมทำงานผิดพลาด โค้ดตัวอย่างนี้ใช้ตัวแปร number
ที่ยังไม่ได้กำหนดค่า ผลลัพธ์จะไม่แน่นอน
int number;
printf("%d", number); // ใช้งานตัวแปรที่ยังไม่ได้กำหนดค่า
เพื่อหลีกเลี่ยงปัญหา ควรกำหนดค่าเริ่มต้นให้ตัวแปรเสมอ
int number = 0; // กำหนดค่าเริ่มต้นให้ตัวแปร
printf("%d", number); // ผลลัพธ์ปกติ
7.2 ข้อผิดพลาดจากชนิดข้อมูลไม่ตรงกัน
ถ้าใช้ตัวแปรคนละชนิดในการกำหนดค่า อาจทำให้ข้อมูลสูญหาย ตัวอย่างนี้กำหนดค่าทศนิยมให้กับ int
ซึ่งทศนิยมจะถูกตัดออก
int number = 3.14; // กำหนดค่าทศนิยมให้กับ int
printf("%dn", number); // ผลลัพธ์คือ 3 (ทศนิยมจะหายไป)
ควรเลือกชนิดข้อมูลให้เหมาะสม หากต้องการใช้ค่าทศนิยมควรใช้ double
หรือ float
double number = 3.14;
printf("%fn", number); // ผลลัพธ์คือ 3.140000
8. แบบฝึกหัดจริง
8.1 แบบฝึกหัดที่ 1: การคำนวณพื้นฐานด้วยตัวแปร
แบบฝึกหัดนี้ ให้ใช้ตัวแปรจำนวนเต็มสองตัว เพื่อคำนวณบวก ลบ คูณ หาร แล้วแสดงผลลัพธ์ทางหน้าจอ
#include <stdio.h>
int main() {
int a = 10;
int b = 5;
// แสดงผลลัพธ์การคำนวณ
printf("บวก: %dn", a + b);
printf("ลบ: %dn", a - b);
printf("คูณ: %dn", a * b);
printf("หาร: %dn", a / b);
return 0;
}
เคล็ดลับ: ผลลัพธ์ของหารจะเป็นจำนวนเต็มเท่านั้น เช่น a / b
จะได้ 2
ถ้าต้องการผลลัพธ์เป็นทศนิยมให้ใช้ตัวแปร double
8.2 แบบฝึกหัดที่ 2: เข้าใจขอบเขตตัวแปร
แบบฝึกหัดนี้ เพื่อเข้าใจความแตกต่างของตัวแปรภายในฟังก์ชันและตัวแปรทั่วโปรแกรม ตัวแปรภายในฟังก์ชันจะใช้ได้แค่ในฟังก์ชัน ส่วนตัวแปรทั่วโปรแกรมจะใช้ได้ทั้งโปรแกรม
#include <stdio.h>
int globalVar = 10; // ตัวแปรทั่วโปรแกรม
void function() {
int localVar = 20; // ตัวแปรภายในฟังก์ชัน
printf("ค่าตัวแปรภายในฟังก์ชัน: %dn", localVar);
printf("ค่าตัวแปรทั่วโปรแกรม: %dn", globalVar);
}
int main() {
function();
// เข้าถึงตัวแปรทั่วโปรแกรม
printf("ค่าตัวแปรทั่วโปรแกรมในฟังก์ชัน main: %dn", globalVar);
// เข้าถึงตัวแปรภายในฟังก์ชัน (จะเกิดข้อผิดพลาด)
// printf("ค่าตัวแปรภายในฟังก์ชัน main: %dn", localVar);
return 0;
}
เคล็ดลับ: ถ้าพยายามเข้าถึงตัวแปรภายในฟังก์ชันจากฟังก์ชัน main จะเกิดข้อผิดพลาด (Error) ลองเอา comment ออกแล้วรันดู
8.3 แบบฝึกหัดที่ 3: การกำหนดค่าเริ่มต้นและการจัดการข้อผิดพลาดของตัวแปร
แบบฝึกหัดนี้ เพื่อตรวจสอบข้อผิดพลาดจากการใช้ตัวแปรที่ยังไม่ได้กำหนดค่า ตัวอย่างนี้ number
ยังไม่ได้กำหนดค่า จะเกิดผลลัพธ์ไม่แน่นอน
#include <stdio.h>
int main() {
int number; // ยังไม่ได้กำหนดค่า
printf("ค่าตัวแปรที่ยังไม่ได้กำหนด: %dn", number);
return 0;
}
จากนั้นให้ลองรันโค้ดที่กำหนดค่าเริ่มต้นให้ตัวแปร number
แล้วสังเกตผลลัพธ์ที่ได้
#include <stdio.h>
int main() {
int number = 0; // กำหนดค่าเริ่มต้นให้ตัวแปร
printf("ค่าตัวแปรที่กำหนดแล้ว: %dn", number);
return 0;
}