ตัวแปร
ตัวแปร
ตัวแปร (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 เพื่อเก็บข้อมูลดังกล่าวสามารถทำได้ดังนี้ โดย 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)*/ ตัวแปร (Variable) ในภาษาซี ตัวแปร หมายถึง ชื่อเรียกแทนพื้นที่เก็บข้อมูลในหน่วยความจำ มี ชนิด ของข้อมูล หรือแบบของตัวแปรคือ char, int, long, float, double, unsigned int, unsigned long int การกำหนดตัวแปร ทำได้ 2 แบบ คือ 1.กำหนดไว้ นอกกลุ่มคำสั่ง หรือฟังก์ชัน เรียกตัวแปรนี้ว่า Global Variable กำหนดไว้นอกฟังก์ชัน ใช้งานได้ทั้งโปรแกรม มีค่าเริ่มต้นเป็น 0 ( กรณีไม่ได้กำหนดค่าเริ่มต้น ) 2.กำหนดไว้ ในกลุ่มคำสั่ง หรือฟังก์ชัน เรียกตัวแปรนี้ว่า Local Variable กำหนดไว้ ภายในฟังก์ชัน ใช้งานได้ภายในฟังก์ชันนั้น และไม่ถูกกำหนดค่าเริ่มต้นโดยอัตโนมัติ การกำหนดชื่อตัวแปร หลักการมีดังนี้ 1.ต้องขึ้นต้นด้วยตัวอักษร 2.ห้ามใช้เครื่องหมายทางคณิตศาสตร์ในชื่อตัวแปร 3.สามารถใช้เครื่องหมาย underline ‘_' ได้ 4.ห้ามใช้ reserved words เช่น int, float, etc. Note: คอมไพเลอร์ในภาษาซีสามารถเห็นความแตกต่างของชื่อตัวแปรได้ยาว ไม่เกิน 8 ตัวอักษร และชื่อตัวแปรจะแตกต่างกันถ้าใช้รูปแบบของตัวอักษร ต่างกัน การประกาศตัวแปร มีลักษณะดังนี้ ชนิดของข้อมูลในภาษาซี 1.ตัวแปรแบบ char เป็นตัวแปรที่ใช้สำหรับเก็บข้อมูลที่เป็นตัวอักษรขนาด 1 ตัว โดยใช้ เนื้อที่ในการเก็บ 1 ไบต์ ตัวอย่าง ตัวแปรชนิดนี้ เช่น 'A' , 'b' , '1' , '?' 2.ตัวแปรแบบ integer เป็นตัวแปรที่ใช้สำหรับการเก็บค่าตัวเลขที่เป็นจำนวนเต็มที่มีค่า ระหว่าง - 32768 ถึง 32767 ใช้เนื้อที่ในการเก็บ 2 ไบต์ ตัวอย่าง ตัวแปรชนิดนี้ เช่น 5 , -10 , 2534 3.ตัวแปรแบบ long เป็นตัวแปรที่เก็บค่าเป็นจำนวนเต็มที่มีจำนวนไบต์เป็น 2 เท่าของ จำนวนเดิม ( มักจะใช้เป็นคำนำหน้าตัวแปร เช่น long int ) 4.ตัวแปรแบบ float เป็นตัวแปรที่ใช้เก็บข้อมูลที่เป็นเลขทศนิยม โดยจะเก็บอยู่ในรูป a.b x 10 e ใช้พื้นที่ในการเก็บ 4 ไบต์ มีค่าระหว่าง 3.4E-38 ถึง 3.4E+38 หรือ แสดงเป็น เลขทศนิยมได้ไม่เกิน 6 ตำแหน่ง ตัวอย่าง ตัวแปรชนิดนี้ เช่น 10.625 -6.67 5.ตัวแปรแบบ double เป็นตัวแปรที่เก็บข้อมูลที่เป็นเลขทศนิยมเหมือนกับ float แต่จะ ใช้พื้นที่ในการเก็บมากกว่าเดิม 2 เท่า คือมีขนาด 8 ไบต์ มีค่าระหว่าง 1.7E-308 ถึง 1.7E+308 6. ตัวแปรแบบ unsigned แสดงว่าเป็นตัวแปรที่เก็บค่าเป็นจำนวนเต็ม แบบไม่คิด เครื่องหมาย ( เป็นบวกเท่านั้น ) มักจะใช้เป็นคำนำหน้าตัวแปร ตัวอย่างการใช้งาน เช่น unsigned int |