ตัวแปร (Variables)

ตัวแปร คือ ชื่อที่กำหนดขึ้นเพื่อใช้จัดเก็บข้อมูล และเพื่อใช้งานโปรแกรม โดยค่าข้อมูลที่บันทึกอยู่ในตัวแปรนั้น จะถูกจัดเก็บไว้ในหน่วยความจกหลักที่สามารถนำไปประมวลผล และอ้างอิงภายในโปรแกรมได้อย่างไรก็ตาม ตัวแปรที่ใช้งานในภาษาซีจำเป็นต้องได้รับการกำหนดชนิดข้อมูลว่าใช้จัดเก็บข้อมูลชนิดใด เช่น
ㆍตัวแปรชื่อ char1 นำไปใช้จัดเก็บอักขระ 1 ตัว
ㆍตัวแปรชื่อ name นำไปใช้จัดเก็บข้อมูลชนิดข้อความ
ㆍตัวแปรชื่อ number นำไปใช้จัดเก็บข้อมูลเลขจำนวนเต็มบวก
ㆍตัวแปรชื่อ total นำไปใช้จัดเก็บข้อมูลเลขจำนวนจริงมีทศนิยม
อย่างไรก็ตามการตั้งชื่ตัวแปรเพื่อใช้งานโปรแกรม จะต้องเป็นไปตามกฎเกณฑ์การตั้งชื่อของภาษานั้นๆ ด้วย สำหรับการตั้งชื่อตัวแปรในภาษาซี ประกอบด้วย
- สามารถใช้ตัวอักษร A ถึง Z หรือ ล ถึง 2 รวมทั้ง ตัวเลข O ถึง 9 และเครื่องหมาย(Underscore) มาใช้เพื่อการตั้งชื่อตัวแปรได้ แต่มีเงื่อนไขว่า ห้ามใช้ตัวเลขนำหน้าชื่อตัวแปร ตัวอย่างเช่น 1digt ถือว่าผิด แต่ถ้าตั้งชื่อใหม่เป็น digt1 หรือ digit_1 ถือว่า ถูกต้อง
- ชื่อตัวแปรสามารถมีความยาวได้ถึง 31 ตัวอักษร (กรณีเป็น ANSIC)
- ชื่อตัวแปร จะต้องไม่ตรงกับคำสงวน (Reseved Words) ซึ่งก็คือ ชุดคำสั่งที่ใช้ในภาษาซีนั่นเอง แต่อย่างไรก็ตมหากมีความจำเป็นต้องตั้งชื่อตรงกับคำสงวนก็สามารถทำได้ไม่ยาก เนื่องจากชุดคำสั่งในภาษาชี มักจะเป็นตัวอักษรพิมพ์เล็ก ดังนั้น การตั้งชื่อตัวแปรชื่อว่า Auto จึงสามารถใช้งานได้และถือว่าไม่ตรงกับคำสงวนของคำว่า auto สำหรับตัวอย่างคำสงวนที่ใช้ในภาษาซี เช่น
auto continue enum if short switch volatile break default extern int signed typedef while case do float sizeof union long char double for register static unsigned const else goto return struct void

รูปแบบของการประกาศตัวแปร

จากเนื้อหาข้างต้นที่ผ่านมา ได้กล่าวถึงการประกาศตัวแปรมาบ้างแล้ว แต่ในภาษาซียังสามารถแบ่งรูปแบบของตัวแปรที่ประกาศใช้งานในโปรแกรมออกเป็น 2 ประเภทด้วยกันคือ
ตัวแปรแบบภายนอก (Global Variables)
ตัวแปรชนิดนี้ จะประกศอยู่ภายนอกฟังก์ชั่น และจะเป็นตัวแปรสาธารณะที่ทุกๆ ฟังก์ชั่นภายในโปรแกรมสามารถนำมาเรียกใช้งานได้ ตัวอย่างการประกาศตัวแปรแบบภายนอก เช่น

รูป2

ตัวแปรแบบภายใน (Local Variables)
ตัวแปรชนิดนี้จะถูกกำหนดอยู่ภายในฟังก์ชั่น ถึงแม้แต่ละฟังก์ชั่นจะมีการกำหนดชื่อตัวแปรที่เหมือนกันก็ตาม แต่จะถือว่าเป็นตัวแปรคนละตัวกัน เนื่องจากถูกใช้งานภายในขอบเขตของฟังก์ชั่นนั้นๆตัวอย่างการประกาศตัวแปรแบบภายใน เช่น

รูป3

จากตัวอย่างข้างตัน ตัวแปรชื่อ va1 ที่ประกาศใช้งานอยู่ในฟังก็ชั่น man( และตัวแปรชื่อvar1 เหมือนกับที่ประกาศใช้งนอยู่ในฟังก์ชั่น func10) แต่จะถือว่าเป็นคนละตัวแปรกัน ซึ่งจะถูกอ้างอิงใช้งานเฉพาะขอบเขตภายในฟังก์ชั่นนั้นเท่านั้น
ตัวอย่างโปรแกรม พิสูจน์การทำงานของตัวแปรแบบภายใน

รูป4

คำอธิบาย

บรรทัดที่
ความหมาย
1 ผนวกเฮดเดอร์ไฟล์ stdio.h
2 ผนวกเฮดเดอร์ไฟล์ conio.h
4 ฟังก์ชั่น func1() ซึ่งเป็นฟังก์ชั่นที่สร้างขึ้นเอง
6 ประกาศตัวแปร var1ให้มีชนิดข้อมูลเป็น int มีค่าเริ่มต้นเท่ากับ 999
7 บล็อก } เพื่อแสดงจุดสิ้นสุดของฟังก์ชั่น func1()
8 ฟังก์ชั่น main() ซึ่งเป็นฟังก์ชั่นหลัก
11 ประกาศตัวแปร var1 ให้มีชนิดข้อมูลเป็น int มีค่าเริ่มต้นเท่ากับ 555
12 เรียกใช้งาน func1()
13 พิมพ์ค่าตัวแปร var1

ผลลัพธ์จากการรันโปรแกรม ตัวอย่างโปรแกรม

รูป5

จากโปรแกรมจะพบว่า ในบรรทัดที่ 12 ที่มีการเรียกใช้งานฟังก์ชั่น func1() ซึ่งจะมีการ กำหนดค่าให้กับตัวแปร var1 ซ้ำอีกครั้ง คือ 999 แต่ในบรรทัดที่ 14 เมื่อสั่งพิมพ์ค่า var1 กลับมีค่า เป็น 555 ซึ่งเป็นการพิสูจน์ถึงตัวแปรแบบภายใน ที่จะถูกใช้งานภายในฟังก์ชั่นเท่านั้น ถึงแม้ว่าใน ฟังก์ชั่นอื่นๆ จะมีการตั้งชื่อตัวแปรที่เหมือนกันก็ตาม แต่จะถือว่าเป็นตัวแปรคนละตัวกัน

กลับไปด้านบน