องค์ประกอบของภาษาc
บทนำ
ในบทนี้จะกล่าวถึงองค์ประกอบของภาษาซีที่ใช้ในการสร้างประโยคคำสั่งในภาษาซี อันได้แก่อักษรในภาษาซี คำหลัก ข้อมูล ค่าคงที่ ตัวแปร และตัวประกาศ ซึ่งองค์ประกอบต่าง ๆ เหล่านี้จะนำมาสร้างเป็นองค์ประกอบที่ซับซ้อ
อักขระในภาษาซี(KEYWORD)
อักขระที่ใช้ในภาษาซี ประกอบด้วย ตัวอักษร A-Z ทั้งตัวเล็กและตัวใหญ่ ตัวเลข 0-9 และตัวอักขระพิเศษต่าง ๆ ได้แก่
! # % ^ & * ( ) ( _ + = [ ]
\ ; : ‘ “ { } ‘ . < > / ? blank
โดยเฉพาะใช้ในการผสมตัวอักขระเพื่อแทนเงื่อนไขพิเศษบางอย่าง เช่น
\n หมายถึง ขึ้นบรรทัดใหม่
\t หมายถึง การขยับตำแหน่งตามแนวนอน
ซึ่งลักษณะด้านข้างต้นเรียกว่า ลำดับหลีก (Escape Sequence) ซึ่งลำดับหลีกแต่ละตัวจะใช้แทนตัวอักขระเพียงตัวเดียว แม้จะต้องเขียนอักขระ 2 ตัวหรือหลายตัวก็ตาม
คำหลัก (Keyword)
ในภาษาซีมีอยู่กลุ่มหนึ่ง เรียกว่า คำหลัก บางทีอาจเรียกว่า คำสงวน (Reserve Word) คำหลักเหล่านี้เป็นคำมาตรฐานซึ่งกำหนดความหมายไว้แล้ว คำหลักเหล่านี้จะใช้เพื่อวัตถุประสงค์ตามที่กำหนดไว้เท่านั้น ไม่สามารถนำไปใช้เป็นตัวแปรชุดได้ คำหลักที่เป็นมาตรฐานในภาษาซี ได้แก่
Auto double int struct break else long switch
Casa enum register typedef char extern union
Const float unsigned continult goto sizeof volatile
Do if static while
ประเภทข้อมูล(Data Type)
ภาษาซีสามารถใช้งานกับข้อมูลได้หลายประเภท ข้อมูลแต่ละประเภทก็จะเก็บในหน่วยความจำโดยใช้ขนาดเนื้อที่ที่ต่างกัน ดังนี้
ประเภทข้อมูล | ความหมาย | ขนาดเนื้อที่หน่วยความจำที่ใช้เก็บ |
Char | อักขระ 1 ตัว | 1ไบต์ |
nit | เลขจำนวนเต็ม | 2ไบต์ |
float | เลขทศนิยม | 4ไบต์ |
double | เลขทศนิยมความละเอียดสูง | 8ไบต์ |
จะเห็นได้ว่า ขนาดของหน่วยความจำสำหรับข้อมูลที่เป็นตัวเลข จะเป็นตัวกำหนดช่วงของค่าที่เป็นไปได้สำหรับข้อมูลประเภทนั้น ๆ
ค่าคงที่ (Constant)
ค่าคงที่ในภาษาซีมีอยู่ 4ประเภท คือ ค่าคงที่จำนวนเต็ม ค่าคงที่ทศนิยม ค่าคงที่อักขระและค่าคงที่สตริง โดยที่ค่าคงที่จำนวนเต็มละค่าคงที่ทศนิยมอาจเรียกรวม ๆ กันว่า ค่าคงที่จำนวนเลข
ค่าคงที่จำนวนเลข มีจำนวนดังนี้
- ห้ามมีเครื่องหมายจุลภาค หรือมีช่องว่างอยู่ภายใต้ค่า
- ตังเลขสามารถมีเครื่องหมายลบนำหน้าได้ จะทำให้ค่าคงที่นั้นมีค่าเป็นลบ
- ค่าคงทีจำนวนเลขต้องมีค่าไม่ใหญ่เกินค่าไม่เกินค่าสูงสุด และไม่เล็กกว่าค่าต่ำสุดของช่วงค่าที่เป็นไปได้
สามารถอธิบายถึงค่าคงที่แต่ละประเภทได้ดังนี้
1. ค่าคงที่จำนวนเต็ม (Integer Constant)
ค่าคงที่จำนวนเต็มใช้เก็บค่าตังเลขที่เป็นจำนวนเต็ม สามารถเขียนค่าตัวเลขได้โดยใช้ระบบจำนวน(Number System) 3 ระบบ คือ ระบบเลขฐานสิบ ระบบเลขฐานแปด และระบบเลขฐานสิบหก ซึ่งจะอธิบายค่าตัวเลขในแต่ละระบบได้ดังนี้
ค่าคงที่จำนวนเต็มฐานสิบ ตัวเลขแต่ละหลักสามารถเป็นตัวเลขใดก็ได้ในจำนวนตัวเลข0ถึง9และถ้าเป็นเลขหมายหลัก ในหลักแรกจะต้องไม่เป็นศูนย์
ตัวอย่าง ค่าคงที่จำนวนเต็มที่เป็นเลขฐานสิบที่ผิด
3,462 ผิด เนื่องจากมีเครื่องหมายจุลภาคปนอยู่ในค่าตัวเลขไม่ได้
34 62 81 ผิด เนื่องจากมีช่องว่างปนอยู่ในค่าคงตัวเลขไม่ได้
673.05 ผิด เนื่องจากมีจุดทศนิยมปนอยู่ในค่าตัวเลขจำนวนเต็มไม่ได้
0835 ผิด เนื่องจากตัวเลขในหลักแรกต้องไม่เป็นศูนย์
963-12-308 ผิด เนื่องจากมีเครื่องหมายลบปนอยู่ภายในค่าตัวเลขไม่ได้ และถ้าจะใส่เครื่องหมายลบ ต้องใส่นำหน้าค่าตังเลขเท่านั้น
ค่าคงที่จำนวนเต็มฐานแปด ตัวเลขแต่ละหลักสามารถเป็นตัวเลขใดก็ได้ในจำนวนตัวเลข 0 ถึง 7 ในการเขียนค่าคงที่จำนวนเต็มที่เป็นตัวเลขฐานแปดให้เขียนเลขศูนย์นำหน้าค่านั้น ๆ
ตัวอย่าง ค่าคงที่จำนวนเต็มที่เป็นเลขฐานแปดที่ถูกต้อง เช่น
045 มีค่าเท่ากับ (45)8
0136 มีค่าเท่ากับ (136)8
ตัวอย่าง ค่าคงที่จำนวนเต็มที่เป็นเลขฐานแปดที่ผิด เช่น
41 ผิด เนื่องจากไม่ได้นำหน้าด้วยเลข 0
0362.41 ผิด เนื่องจากมีจุดทศนิยมปนอยู่ในค่าตัวเลขจำนวนเต็มไม่ได้
02459 ผิด เนื่องจากมีตัวเลข 9 ซึ่งไม่ได้อยู่ในช่วง 0-7 ของเลขฐานแปดปนอยู่
ค่าคงที่จำนวนเต็มฐานสิบหก ตัวเลขแต่ละหลักสามารถเป็นตัวเลขใดก็ได้ในจำนวนตัวเลข 0 ถึง 9 และตัวอักษร A ถึง F หรือ a ถึง f ซึ่งใช้แทนค่าตัวเลข 10 ถึง 15 ตามลำดับ ในการเขียนค่าคงที่จำนวนเต็มที่เป็นเลขฐานสิบหก ให้เขียนเลขศูนย์กับตัวอักษรเอ็กซ์ (X หรือ x ) นำหน้าค่านั้น ๆ
ตัวอย่าง ค่าคงที่จำนวนเต็มที่เป็นเลขฐานสิบหกที่ถูกต้อง เช่น
0X428 มีค่าเท่ากับ (428)16
0X71 มีค่าเท่ากับ (71)16
0x6AC4 มีค่าเท่ากับ (6AC4)16
0Xbca มีค่าเท่ากับ (BCA) 16
0xffff มีค่าเท่ากับ (FFFF) 16
ตัวอย่าง ค่าคงที่จำนวนเต็มที่เป็นเลขฐานสิบหกที่ผิด เช่น
0X36.5 ผิด เนื่องจากมีจุดทศนิยมปนอยู่ในค่าตัวเลขจำนวนเต็มไม่ได้
0XDFGA ผิด เนื่องจากในเลขฐานสิบหกไม่มีตัว G
012A4 ผิด เนื่องจากไม่ได้นำหน้าค่าด้วย 0X หรือ 0x
X508F ผิด เนื่องจากไม่ได้นำหน้าค่าด้วย 0X หรือ 0x
ABCD ผิด เนื่องจากไม่ได้นำหน้าค่าด้วย 0X หรือ 0x
ทั้งนี้ ในไมโครคอมพิวเตอร์โดยทั่วไปค่าสูงสุดของเลขจำนวนเต็มจะมีค่าเป็น 32767 หรือเท่ากับ (77777)8 หรือเท่ากับ (7FFF) 16 หรือเท่ากับ 215 – 1
ค่าคงที่จำนวนเต็มแบบ Unsigned และแบบ Long ค่าคงที่จำนวนเต็มแบบ Unsigned จะเก็บค่าได้มากกว่าค่าคงที่จำนวนเต็มธรรมดาถึง 2 เท่า แต่จะไม่สามารถเก็บค่าที่เป็นลบได้ ถ้าต้องการใช้ค่าที่จำนวนเต็มแบบ Unsigned จะทำโดยใส่ตัวอักษร U หรือ u ไว้ท้าค่าคงที่นั้น ๆ ส่วนค่าคงที่แบบ Long จะเก็บค่าได้มากกว่าค่าคงที่จำนวนเต็มธรรมดา ถ้าต้องการการกำหนดค่าคงที่แบบ Long จะทำโดยใส่ตัวอักษร L หรือ l ไว้ท้ายค่าคงที่นั้น ๆ ดังนั้นถ้าต้องการการกำหนดค่าคงที่แบบ Unsigned Long จะทำโดยใส่ตัวอักษร UL ไว้ท้ายค่าคงที่นั้น ๆ โดยเขียน U ก่อน L เสมอ
ตัวอย่าง ค่าคงที่แบบ Unsigned และแบบ Long เช่น
4500U เป็นจำนวนเต็มฐานสิบแบบ Unsigned
67248159L เป็นจำนวนเต็มฐานสิบแบบ Long
67248159UL เป็นจำนวนเต็มฐานสิบแบบ Unsigned Long
04500U เป็นจำนวนเต็มฐานสิบแบบ Unsigned
0312456L เป็นจำนวนเต็มฐานสิบแบบ Long
0312456UL เป็นจำนวนเต็มฐานสิบแบบ Unsigned Long
0X4500U เป็นจำนวนเต็มฐานสิบแบบ Unsigned
0X467CL เป็นจำนวนเต็มฐานสิบแบบ Long
0X467CUL เป็นจำนวนเต็มฐานสิบแบบ Unsigned Long
2.ค่าคงที่ทศนิยม ( Floating Point Constant )
ค่าคงที่ทศนิยมใช้เก็บค่าตัวเลขที่มีจุดทศนิยมทั้งสองจุดทศนิยมธรรมดา และชนิดที่มีตัวเลขชี้กำลังในรูปของ E ยกกำลัง หรือมีทั้งสองชนิดอยู่ด้วยกัน
ตัวอย่าง ค่าคงที่ทศนิยมที่ถูกต้อง เช่น
1.0 0.48 267.015 4005.
2E + 5 0.14E+ 3 1.22e5 .1544e-3
จากตัวอย่างข้างต้น ตัวเลขที่อยู่หน้า E อาจเป็นเลขจำนวนเต็ม หรือเป็นเลขทศนิยมก็ได้ กรณีเลขชี้กำลังที่อยู่หลัง E เป็นบวก จะเป็นการเลื่อนตำแหน่งของจุดทศนิยมไปทางขวา แต่ถ้าเลขชี้กำลังเป็นลบจะเป็นการเลื่อนตำแหน่งของจุดทศนิยมไปทางซ้าย เลขทศนิยมที่มีเลขชี้กำลังจะมีความหมายเหมือนกับความหมายทางคณิตศาสตร์ โดยเลขฐาน 10 จะแทนด้วย Eหรือ e เช่น 1.22e5 จะมีความหมายเป็น 1.22x105 และ 0.67E-2 จะมีความหมายเป็น 0.67x10-2 เป็นต้น
3. ค่าคงที่ตัวอักขระ (Character Constant)
ค่าคงที่ตัวอักขระใช้เก็บตัวอักขระเพียง 1ตัว โดยจะกำหนดอยู่ภายใต้เครื่องหมาย’ ‘อักขระที่อยู่ภายในอาจเป็นตัวเลข หรืออักษร หรืออักขระพิเศษอย่างใดอย่างหนึ่ง ค่าที่เก็บในหน่วยความจำจะเก็บเป็นหรัสตามชนิดเครื่องใช้ เช่น เก็บเป็นรหัสแอสกี (ASCII) รหัสเอ็บซีดิก(EBCDIC) ดังนั้น ถ้าเป็นไม่โครคอมพิวเตอร์ก็จะเก็บข้อมูลด้วยรหัสแอสกี
ตัวอย่าง ค่าคงที่อักขระและค่าคงที่เก็บเป็นรหัสแอสกี เช่น
’ A‘ มีค่าเป็น 65
’ 1‘ มีค่าเป็น 49
’ Z‘ มีค่าเป็น 122
4. ค่าคงที่สตริง(String Constant)9
ค่าคงที่สตริงประกอบไปด้วยตัวอักขระที่นำมาเรียงกัน เรียกว่า สายวลี เป็นค่าคงที่ที่ไม่สามารถนำไปคำนวณได้ โดยจะกำหนดอยู่ภายในเครื่องหมายคำพูด(“ ’’) อักขระที่อยู่ภายใต้ในอาจเป็นตัวเลข หรืออักษร หรือตัวอักษรพิเศษใด ๆ หรืออาจไม่มีตัวอักษรอยู่เลยก็ได้
ตัวอย่าง ค่าคงที่สตริง เช่น
“University ’’ “ 954-7000 ’’ “book.com ’’
“a+b*c/d ’’ “ ’’ (เรียกว่า Null String)
ปกติตัวแปลโปรแกรมภาษาซีเดิม Null String คือ\o ให้เป็นอักขระตัวสุดท้ายของค่าคงที่สตริงโดยอัตโนมัติโดยจะเติมไว้หน้าเครื่องหมายคำพูดตัวที่ปิดท้ายค่าคงที่สตริง และค่านี้เราจะไม่สามารถมองเห็น ไม่แสดงออกมาเมื่อมีการแสดงค่าสตริงนั้น ๆ และค่า \o นี้จะใช้เป็นตัวบอกจุดสิ้นสุดของข้อความในสตริงด้วย
ดังนั้น ค่าคงที่ตัวอักขระ ’A ‘ กับค่าคงที่สตริง “ A ’’ จึงแตกต่างกัน นอกจากนี้ค่าคงที่ตัวอักขระจะมีค่าจำนวนเต็มที่ใช้แทนตัวมัน แต่ค่าคงที่สตริงที่มีตัวอักขระ 1 ตัวนั้น จริง ๆ แล้วจะประกอบด้วยอักขระ 2 ตัว คือ ตัวอักขระที่มองเห็นนั้นแหละตัวอักขระที่เป็น Null อีก 1 ตัว ค่าคงที่สตริงที่มีอักขระ 1 ตัว จึงไม่มีค่าจำนวนเต็มที่ใช้แทนมันได้
ตัวแปร (Variable)
ตัวแปร คือ ชื่อที่ผู้เขียนโปรแกรมตั้งขึ้น เพื่อใช้เป็นชื่อหน่วยความจำที่ใช้เก็บค่าแล้วหลังจากนั้นจะสามารถนำค่าที่เก็บอยู่ออกมาใช้งานในโปรแกรมได้ โดยอ้างถึงชื่อตัวแปรนั้น ๆ ค่าที่เก็บอยู่ในตัวแปรจะสามารถเปลี่ยนแปลงได้ขณะที่โปรแกรมทำงาน แต่จะไม่สามารถเปลี่ยนประเภทของข้อมูลในตัวแปรนั้นได้
ในการตั้งชื่อตัวแปรจะมีกฎในการตั้งชื่อ
1. ชื่อตัวแปรจะประกอบขึ้นจากตัวอักษรหรือตัวเลข หรือเครื่องหมาย underscore (-) ก็ได้แต่ตัวอักขระตัวแรกในชื่อตัวแปรจะต้องเป็นตัวอักษรเสมอ
2. โดยทั่วไปจะสามารถตั้งชื่อตัวแปรได้ยาวไม่เกิน 32 ตัวอักขระ
3. ชื่อตัวแปรที่ใช้อักษรตัวเล็ก ตัวใหญ่ต่างกัน จะถือเป็นคนละชื่อตัวแปร เช่น maxima และ Max ทั้ง 3 ตัวแปรนี้ถือเป็นตัวแปรคนละชื่อกัน
4. ในชื่อตัวแปรห้ามมีอักษรพิเศษอื่นใดปะปน ยกเว้น $
5. ชื่อตัวแปรที่ตั้งขึ้นต้นต้องไม่ซ้ำกับคำหลัก (Keyword) หรือคำสงวน (Reserve word) ในภาษาซี
ตัวอย่าง ชื่อตัวแปรในภาษาซีที่ถูกต้อง เช่น
Max sum_student score123
ตัวอย่าง ชื่อตัวแปรในภาษาซีถูกต้อง เช่น
1max ผิด เนื่องจากตัวอักขระตัวแรกในชื่อตัวแปรต้องเป็นตัวอักษรเสมอ
Score-123 ผิด เนื่องจากชื่อตัวแปรห้ามมีอักขระพิเศษปะปนอยู่ในชื่อ ยกเว้น $
Break ผิดเนื่องจากเป็นคำหลักในภาษาซี
ชนิดของตัวแปรและการประกาศตัวแปร
ในภาษาซีเมื่อจะมีการใช้ตัวแปรจะต้องการประกาศ (Declaration) ชนิดของตัวแปร( Type of Variable) ก่อน การประกาศตัวแปรเป็นการกำหนดว่าตัวแปรต่างๆ เหล่านั้นมีประเภทของข้อมูลเป็นแบบใด เราจึงต้องมีการประกาศตัวแปรทุกตัวก่อนที่จะมีการใช้งานในโปรแกรม โดยมีรูปแบบคำสั่ง ดังนี้
|
รูปแบบ
โดย variable-list เป็นชื่อของตัวแปรที่ต้องการประกาศ ถ้ามีหลายตัวแปรให้คั่นแต่ละชื่อตัวแปรด้วยเครื่องหมายจุลภาค ( , )
Type เป็นชนิดของตัวแปรซึ่งมีหลายชนิด ได้แก่
ชนิดของตัวแปร | ความหมาย |
Char | เป็นตัวแปรเก็บค่าที่เป็นตัวอักขระใด ๆ 1 ตัว |
int | เป็นตัวแปรเก็บค่าเลขจำนวนเต็ม |
float | เป็นตัวแปรเก็บค่าทศนิยม |
short | เป็นตัวแปรเก็บค่าเลขจำนวนเต็มที่มีค่าที่ประกาศเป็นชนิด int |
long | เป็นตัวแปรเก็บค่าเลขจำนวนเต็มที่มีจำนวนบิตเป็น 2 เท่าของชนิดที่ประกาศไว้ |
double | เป็นตัวแปรเก็บค่าเลขทศนิยมที่มีจำนวนบิตเป็น 2 เท่าของชนิดที่ประกาศไว้ |
unsigned | เป็นตัวแปรเก็บค่าเลขจำนวนเต็มที่มีค่าเป็นบวกเท่านั้น |
ตัวอย่าง การประกาศตัวแปรในภาษาซี
int X,Y,Z;
Float andl,ans2;
Char c ;
จากตัวอย่างข้างต้น เป็นการประกาศตัวแปร X,Y,Z; เป็นตัวแปรจำนวนเต็ม ประกาศตัวแปร ans1และ ans2 เป็นตัวแปรทศนิยม และประกาศตัวแปร c เป็นตัวแปรอักขระ
จากตัวอย่างการประกาศตัวแปรข้างต้น อาจเขียนได้ในลักษณะต่อไปนี้
Int x;
Int y;
Int z;
Float ans1;
Float ans2;
Char c;
แต่ปกติแล้ว มักจะประกาศตัวแปรชนิดเดียวกันไว้ในบรรทัดเดียวกัน
ตัวอย่าง การประกาศตัวแปรแบบจำนวนเต็มให้แบบ short และแบบ long
Short int X,Y,Z; อาจเขียนได้ว่า Short X,Y,Z;
Long int a,b,c; อาจเขียนได้ว่า long a,b,c;
จากตัวอย่างข้างต้นอธิบายได้ดังนี้ Short ชื่อ x,y และz จะใช้เนื้อที่น้อยกว่าตัวแปรจำนวนเต็ม m และn คือ ตัวแปรแบบ Short จะใช้เนื้อที่ 1 ไบต์ (8บิต) ส่วนตัวแปรจำนวนเต็มธรรมดาจะใช้เน้อที่ 2 ไบต์ (16 บิต)ในขณะที่ตัวแปรแบบ long ชื่อ a,b และc จะใช้เนื้อที่มากกว่าตัวแปรจำนวนเต็ม m และn คือ ตัวแปรแบบ long จะใช้เนื้อที่ 4 ไบต์ (32 บิต)
ดังนั้น ค่าสูงสุดตัวแปร x,y และz เก็บได้จะน้อยกว่าค่าที่ตัวแปร m และn เก็บได้ส่วนค่าสูงสุด
ที่ตัวแปร a,b และc เก็บได้จะมากกว่าค่าที่ตัวแปร m และ n เก็บได้
ตัวอย่าง การประกาศค่าตัวแปรจำนวนให้เป็นแบบ unsigned
Int m, n;
Unsigned p,q;
จากตัวอย่างข้างต้น ตัวแปรแบบ Unsigned ชื่อ p,q จะเก็บค่าได้มากว่าตัวแปร m,n ประมาณ 2 เท่า โดยตัวแปร pและ q จะไม่เก็บค่าที่เป็นลบได้ ในขณะที่ตัวแปร m และn สามารถเก็บค่าได้ในช่วง-32768ถึง+32767 แต่ตัวแปร p และ q จะเก็บได้ในช่วง 0 ถึง +65535
1. องค์คำสั่งก่อนการประมวลผล หรือ ส่วนหัวของโปรแกรม (Header File)ตัวอย่าง การประกาศตัวแปรที่มีการกำหนดค่าเริ่มต้นให้ตัวแปร
int a = 25;
char aster = ‘*’ ;
float totai = 0. ;
double tax = 0.123e-3 ;
จากตัวอย่างข้างต้น ตัวแปรจำนวนเต็ม a จะมีค่าเริ่มต้นเป็น 25 ตัวแปรอักขระ aster มีค่าเริ่มต้นเป็น ‘*’ ตัวแปรทศนิยม total มีค่าเริ่มต้นเริ่มเป็น 0. และตัวแปรทศนิยมแบบ double precision ชื่อ tax มีค่าเริ่มต้นเป็น 0.123 × 10³
ต่อไปนี้จะเป็นตารางสรุปชนิดของตัวแปรต่าง ๆ สำหรับมาตรฐาน ANSI
ชนิดข้อมูล | ขนาดเนื้อที่ที่ใช้เก็บค่า (บิต) | ช่วงของค่า |
char signed char unsigned char int signed int unsigned short int signed short int unsigned short int long ing signed long int unsigned long int float double long double | 8 8 8 16 16 16 8 8 8 32 32 32 32 64 128 | ตัวอักขระที่เป็นรหัสแอสกี -128 ถึง 127 0 ถึง 255 -32768 ถึง 32767 -32768 ถึง 32767 0 ถึง 65535 -128 ถึง 127 -128 ถึง 127 0 ถึง 255 -2147483648 ถึง 2147683649 -2147483648 ถึง 2147683649 0 ถึง 4294967296 เลขทศนิยม 6 หลัก เลขทศนิยม 12 หลัก เลขทศนิยม 24 หลัก |
ตัวแปรชุด (Array Variable)
เนื่องจากการเก็บค่าในหน่วยความจำหลาย ๆ ค่า จะต้องตั้งชื่อตัวแปรหลาย ตัวทำให้เกิดความยุ่งยาก
และเพื่อให้การตั้งชื่อตัวแปรหลาย ๆ ตัวทำได้สะดวกมากขึ้น จึงอาจใช้วิธีตั้งชื่อตัวแปรเพียงชื่อเดียว แล้วใช้ตัวเลขบอกว่าเป็นตัวแปรตัวที่เท่าไร การตั้งชื่อตัวแปรแบบนี้เรียกว่าตัวแปรชุด
จึงอาจกล่าวได้ว่า ตัวแปรชุดเป็นชื่อที่ใช้อ้างถึงกลุ่มข้อมูล โดยใช้เป็นชื่อเดียวกัน ข้อมูลทั้งหมดก็จะต้องเป็นข้อมูลชนิดเดียวกัน เช่น เป็นอักขระทั้งหมด เป็นจำนวนเต็มทั้งหมด ข้อมูลแต่ละตัวเก็บอยู่ในตัวแปรชุด ถือเป็นสมาชิกของตัวแปรชุดนั้น ๆ (Array Elements) สมาชิกแต่ละตัวในตัวแปรชุดจะแยกกันโดยการระบุตัวดรรชนีกำกับ (Subscript)
ตัวอย่าง x เป็นตัวแปรชุดที่มีสมาชิก 10 ตัว ได้แก่ x[0], x[1],x[2], x[3], x[4], x[5], x[6], x[7],x[8] และ x[9] ตัวดรรชนีกำกับของสมาชิกแต่ละตัวจะอยู่ในเครื่องหมาย [ ] ดังนั้น ตัวแปรชุดที่มีสมาชิก n ตัว ค่าดรรชนีกำกับก็จะมีค่าตั้งแต่ 0 ถึง n-1 นั่นเอง
ตัวแปรชุดมีอยู่หลายประเภท ได้แก่ ตัวแปรชุดหนึ่งมิติ ตัวแปรชุดสองมิติ ตัวแปรชุดหลายมิติ เป็นต้น
จะได้กล่าวถึงตัวแปรชุดแต่ละประเภท ดังนี้
1. ตัวแปรชุด 1 มิติ (One-Dimension)
เป็นตัวแปรชุดที่มีตัวดรรชนีกำกับเพียงตัวเดียว การประกาศตัวแปรชุดทำได้ดังนี้
รูปแบบ type array-variable-name[X];
โดย type เป็นชนิดของตัวแปร
array-variable-name เป็นชื่อตัวแปรชุดที่ต้องการประกาศชนิด
X เป็นตัวเลขจำนวนเต็มที่บอกขนาดของตัวแปรชุดนั้น ๆ เริ่มจาก ศูนย์และถ้าไม่กำหนดขนาด เครื่องก็จะเตรียมเนื้อที่ในหน่วยความจำเท่ากับขนาดของข้อมูลจริง
ตัวอย่าง char n[5];
เป็นการประกาศตัวแปรชุดชื่อ n เริ่มตั้งแต่ n[0], n[1], … n[49] โดยทุกตัวแปรจะเก็บข้อมูลที่เป็นอักขระ 1 ไบต์
ตัวอย่าง int i[10];
เป็นการประกาศตัวแปรชุด เก็บค่าเลขจำนวนเต็มชนิด 1 มิติ มีขนาดสมาชิก 10 ตัว คือ i[0], i[1], i[2], … i[9] ซึ่งเป็นการจองเนื้อที่หน่วยความจำ 2 ไบต์ต่อ 1 ชื่อตัวแปร
ตัวอย่าง foat f[5];
เป็นการประกาศตัวแปรชุด เก็บค่าเลขทศนิยมชนิด 1 มิติ มีขนาดสมาชิก 5 ตัว คือ f[0], f[1], f[2], f[3], และ f[4] ซึ่งเป็นการจองเนื้อที่หน่วยความจำ 4 ไบต์ต่อ 1 ชื่อตัวแปร
2. ตัวแปรชุด 2 มิติ (Tow-Dimension)
เป็นตัวแปรที่เก็บข้อมูลในลักษณะของตารางซึ่งมี 2 มิติ คือ ในแนวนอน (Row) และในแนว
ตั้ง (Column) ตัวแปรชุด 2 มิติ จึงต้องมีตัวเลขดรรชนีกำกับ 2 ตัว คือ ตัวแรกบอกตำแหน่งข้อมูลในแถว หรือแนวนอน และตัวที่สองบอกตำแหน่งข้อมูลในสดมภ์หรือแนวตั้ง
รูปแบบ type array-variable-name[X][Y] ;
โดย type เป็นชนิดของตัวแปร
arrat-variable-name เป็นชื่อตัวแปรชุดที่ต้องการประกาศชนิด
X เป็นเลขจำนวนเต็มบอกขนาดของแถว เริ่มจากศูนย์
Y เป็นเลขจำนวนเต็มบอกขนาดของคอลัมน์ เริ่มจากศูนย์
รูปแบบ # include <header_name> อธิบาย header_name
ชื่อเฮดเดอร์ไฟล์ที่ควบคุมฟังก์ชันมาตรฐาน เช่น ฟังก์ชัน printf ใช้ควบคุมการแสดงผล
จัดเก็บในไลบรารีชื่อ # include <stdio.h> ตัวอย่าง # include <stdio.h>
อธิบายให้คอมไพเลอร์ค้นหาไลบรารีไฟล์ชื่อ stdio.h จากไดเรกทอรี include
ชื่อเฮดเดอร์ไฟล์ที่ควบคุมฟังก์ชันมาตรฐาน เช่น ฟังก์ชัน printf ใช้ควบคุมการแสดงผล
จัดเก็บในไลบรารีชื่อ # include <stdio.h> ตัวอย่าง # include <stdio.h>
อธิบายให้คอมไพเลอร์ค้นหาไลบรารีไฟล์ชื่อ stdio.h จากไดเรกทอรี include
2. ส่วนฟังก์ชันหลัก (Main Function)
การเขียนโปรแกรมภาษาซีทุกโปรแกรมจะต้องมีฟังก์ชันหลักชื่อ main เสมอโดยมีรูปแบบฟังก์เป็นดังนี้
การเขียนโปรแกรมภาษาซีทุกโปรแกรมจะต้องมีฟังก์ชันหลักชื่อ main เสมอโดยมีรูปแบบฟังก์เป็นดังนี้
Int main(void)
{
Executable statement;
.
‘
return(0);
}
3. การพิมพ์คำสั่งควบคุมงานในโครงสร้างภาษาซี
คำแนะนำในการพิมพ์คำสั่งงาน ซึ่งภาษาซีเรียกว่า ฟังก์ชัน (ต่อไปนี้จะเรียกว่า คำสั่ง ตามที่นิยมทั่วไป) ในส่วนประกอบภายในโครงสร้างภาษาซีมีแนวทางปฏิบัติดังนี้
คำสั่งที่ใช้ควบคุมการประมวลผลตามลำดับที่ได้วิเคราะห์ไว้ ต้องเขียนภายในเครื่องหมาย { } ที่อยู่ภายใต้การควบคุมของ ) ฟังก์ชันหลักชื่อ main ( )
คำแนะนำในการพิมพ์คำสั่งงาน ซึ่งภาษาซีเรียกว่า ฟังก์ชัน (ต่อไปนี้จะเรียกว่า คำสั่ง ตามที่นิยมทั่วไป) ในส่วนประกอบภายในโครงสร้างภาษาซีมีแนวทางปฏิบัติดังนี้
คำสั่งที่ใช้ควบคุมการประมวลผลตามลำดับที่ได้วิเคราะห์ไว้ ต้องเขียนภายในเครื่องหมาย { } ที่อยู่ภายใต้การควบคุมของ ) ฟังก์ชันหลักชื่อ main ( )