ชนิดของข้อมูลและตัวแปรในภาษาซี
![](http://krubpk.com/com_2/pan6/pic1.JPG)
ชนิดของข้อมูล (data type) ในการเขียนโปรแกรมหนึ่งๆ
จะมีข้อมูลต่างๆ เข้ามาเกี่ยวข้องเช่น การนับจำนวนรอบ (loop) ของการทำงานโดยใช้ข้อมูลชนิดจำนวนเต็ม
หรือการแสดงข้อความโดยใช้ข้อมูลชนิดตัวอักษร จะเห็นว่าข้อมูลต่างๆ ถูกแบ่งออกเป็นหลายชนิดตามจุดประสงค์ของการใช้งาน นอกจากนี้ข้อมูลแต่ละชนิด ยังใช้เนื้อที่หน่วยความจำ (memory)
ตัวแปร (variable) เนื่องจากข้อมูลถูกเก็บอยู่ในหน่วยความจำ
การอ้างถึงตำแหน่งของข้อมูลนี้จึงมีความซับซ้อน ไม่สะดวกต่อการเขียนโปรแกรม
จึงมีการเรียกหน่วยความจำ ในตำแหน่งที่สนใจผ่านตัวแปร
การประกาศตัวแปร (variable declaration) คือการจองเนื้อที่ในหน่วยความจำสำหรับเก็บค่าบางอย่างพร้อมทั้งกำหนดชื่อเรียกแทนหน่วยความจำในตำแหน่งนั้นเพื่อให้ผู้เขียนโปรแกรมมีความสะดวกในการเข้าถึงค่าที่เก็บอยู่ในหน่วยความจำดังกล่าว
รูปแบบการประกาศตัวแปรtype variable-name; โดย type
คือชนิดของตัวแปร (ตามตารางด้านล่าง) variable-name คือชื่อของตัวแปร
(ควรตั้งชื่อให้มีความหมายสอดคล้องกับการใช้งานและจำง่าย)
ตัวอย่างการประกาศตัวแปรแบบต่างๆ
int
num; /*ประกาศตัวแปรชนิิดจำนวนเต็ม ชื่อ num*/
float x;char grade, sex; /*ประกาศตัวแปรชนิิดอักขระ ชื่อ grade และ sex
(ประกาศพร้อมกันในบรรทัดเดียว)*/
float temp = 123.45; /*ประกาศตัวแปรชนิดเลขทศนิยมพร้อมกำหนดค่า
123.45*/
char c = "A", t = "B"; /*ประกาศตัวแปรชนิดอักขระสองตัว
พร้อมกำหนดค่าให้แต่ละตัว*/
int oct = 0555; /*ประกาศตัวแปรชนิดจำนวนเต็มชื่อ num พร้อมกำหนดค่าคือ
555 (เป็นเลขฐานแปดเพราะมี 0 นำหน้า)*/
int hex = 0x88; /*ประกาศตัวแปรชนิดจำนวนเต็มชื่อ hex พร้อมกำหนดค่าคือ
88 (เป็นเลขฐาน 16 เพราะมี 0x นำหน้า)*/
ข้อควรระวัง
ชื่อตัวแปรจะต้องขึ้นต้นด้วยตัวอักษรหรือเครื่องหมาย "_" เท่านั้น
ภายในชื่อตัวแปรให้ใช้ตัวอักษร, ตัวเลข 0-9 หรือเครื่องหมาย
"_"
ห้ามมีช่องว่างในชื่อตัวแปร
อักษรตัวพิมพ์เล็ก-ใหญ่ มีความแตกต่างกัน (case sensitive) เช่น Name,
NAME และ nameถือเป็นชื่อที่แตกต่างกัน
ห้ามซ้ำกับชื่อตัวแปรสงวน (reserved word)
ตัวแปรชนิดข้อความ
(string)
ถ้าเราต้องการเก็บข้อความ
"C
programming language" ไว้ในตัวแปร จะทำได้อย่างไร?ที่ผ่านมาเราทราบว่าเราสามารถเก็บข้อมูลชนิดตัวอักขระไว้ในตัวแปรชนิด
char ได้ แต่ตัวแปรชนิด char นั้นสามารถเก็บตัวอักขระได้เพียงตัวเดียวเท่านั้น
ไม่สามารถเก็บทั้งข้อความได้ แล้วเราจะแก้ปัญหาได้อย่างไร?หากพิจาณาให้ดี ข้อความดังกล่าวประกอบด้วยตัวอักขระ
(ตัวอักษร+สัญลักษณ์) หลายๆ ตัวเรียงต่อกันเป็นสายซึ่งเป็นลักษณะของตัวแปรแบบ array (จะได้กล่าวภายหลัง)การประกาศตัวแปรแบบ array เพื่อเก็บข้อมูลดังกล่าวสามารถทำได้ดังนี้
type variable-name[size]; โดยsize คือขนาดของข้อความ+1
โดยขนาดที่เพิ่มขึ้นเพราะต้องเก็บอักขระสุดท้ายของข้อความเป็นอักขระ \0 หรือ NULL เพื่อบอกว่าสิ้นสุดข้อความแล้ว
ตัวอย่างการประกาศตัวแปรแบบ
array
เพื่อเก็บข้อความ "C programming language" (22 ตัวอักษร) ทำได้หลายวิธีดังนี้
char[23] text = "C programming
language";
/*กำหนดขนาดเพิ่มขึ้น 1 ตัว สำหรับเก็บค่า \0 หรือ NULL ในตำแหน่งสุดท้าย*/
char[23] text = {'C',' ','p','r','o','g','r','a','m','m','i','n','g','
','l','a','n','g','u','a','g','e','\0'};
/*กำหนดขนาดเพิ่มขึ้น 1 ตัว สำหรับเก็บค่า \0 หรือ NULL ในตำแหน่งสุดท้าย*/
char[] text = "C programming language";
/*ถ้าไม่กำหนดขนาดของ array แล้ว
ตัวแปรภาษาซีจะกำหนดให้โดยมีขนาดเท่ากับขนาดข้อความ+1*/
นอกจากนี้เรายังสามารถแก้ไขตัวอักษรที่เก็บอยู่ใน
array
ได้โดยการอ้างอิงตำแหน่งเช่น
text[0]
= 'A'; /*แก้ตัวอักษรตัวแรก (เริ่มนับจาก 0) จะได้ผลลัพธ์คือ A
programming language*/
text[2]
= ' '; /*ผลลัพธ์คือ A rogramming language (ใส่ช่องว่างแทนตัว
p)*/
ไม่มีความคิดเห็น:
แสดงความคิดเห็น