[ภาษาซี] เมื่อเราพูดถึง "Array"
posted on 21 May 2009 12:56 by mistertun in CProgrammingบทนี้จะพูดถึงตัวแปรแบบ Array (อา-เร) ครับ
Array เป็นตัวแปรที่มีกันทุกภาษา และถือเป็นส่วนที่สำคัญมากๆในการเขียนโปแกรมครั้บ อาเรย์ที่เราจะศึกษามีอยู่ด้วยกัน 3 แบบครับ
1. อาเรย์ 1 มิติ
2. 2 มิติ
3. 3 มิติ หรือมากกว่า
มิติในที่นี้ ไม่ได้หมายถึงมิติเวลา หรือโลกต่างมิติอะไรแบบนั้นนะครับ มิติเป็ยรูปแบบการเก็บข้อมูลอย่างนึง เอาไว้เราจะค่อยๆพูดถึงครับ
อาเรย์คืออะไร
สมมติว่าเราสร้างตัวแปรเพื่อเก็บส่วนสูงของคนสามคน เวลาเขียนเราก็ต้องประกาศตัวแปร 3 ตัวถูกมั้ยครับ เช่น
int height1,height2,height3;
ซึ่งถ้าเรามีแค่ 3 คนมันก็ไม่เดือดร้อนหรอก จริงมั้ยล่ะ แต่ถ้าเรามีคนอยู่ซัก 100 คน จะทำยังไงล่ะทีนี้
อาเรย์ช่วยได้ครับ ท่านจำการประกาศตัวแปรเพื่อใช้เก็บข้อความได้มั้ยล่ะ ที่เราพูดถึงตอนเรียนเรื่องตัวแปร char ซึ่งเวลาเราจะประกาศเพื่อเก็บข้อความ เราจะประกาศแบบนี้
char message[150];
ซึ่งนอกจาก char แล้ว แบบอื่นๆก็ทำได้ครับ เช่น ถ้าเราต้องการเก็บส่วนสูงของคน 100 คน เราก็สามารถประกาศแบบนี้ได้เลย
int height[100];
ซึ่งการประกาศแบบนี้ มีค่าเท่ากับการประกาศตัวแปร height ไป100ตัว
int height0, height1 ,height2 ... height99
สรุปคือ ตัวแปรอาเรย์มีรูปแบบการประกาศแบบนี้
ชนิดข้อมูล ชื่อตัวแปร[จำนวนช่องของอาเรย์];
ซึ่งเมื่อเราประกาศเสร็จแล้ว แล้วเราต้องการใช้งาน สมมติว่าอยากรู้ส่วนสูงของคนที่ 50 เราก็อ้างถึงตัวแปรแบบนี้
printf("%d",height[50]);
สังเกตว่าเราจะใช้ [ ] เป็นตัวบอกตำแหน่ง สมมติว่าจะอ้างถึงคนที่ 10 ก็อ้างว่า height[10] เป็นต้น ซึ่งเราเรียกเลขใน [ ] เวลาอ้างถึงตัวแปรว่า "INDEX" ครับ index ในภาษาซีนั้นเริ่มต้นที่ 0 นะครับ เพราะฉะนั้นถ้าเราประกาศ
int a[10];
เราจะสามารถอ้างได้ตั้งแต่ a[0] ถึง a[9] เท่านั้น นอกจากนี้เวลาเราอ้างถึงตัวแปรอาเรย์ เราสามารถใช้ตัวแปรเป็น index ได้ด้วย เช่น
int i;
int a[10];
i = 5;
printf("%d", a[i]);
ถึงแม้เราจะใช้ตัวแปรเป็น index ในการอ้างขึ้นข้อมูลในอาเรย์ แต่เราไม่สามารถใช้ตอนที่ประกาศได้นะครับ
int i=10;
int a[i]; // แบบนี้ไม่ได้
คือเวลาอ้างถึงตำแหน่งข้อมูลจะใช้ตัวแปรได้ แต่เวลาประกาศจะใช้ไม่ได้ หากต้องการใช้ตัวแปรเป็นตัวบอกจำนวนช่องตอนที่ประกาศ เราต้องใช้ตัวแปรแบบ "ค่าคงที่"
สมมติเราประกาศค่าคงที่ไปแล้ว เราสามารถเอาค่าคงที่นั้นมาใช้ตอนประกาศอาเรย์ได้ครับ เช่น
#define X 10
int main()
{
int height[X];
บทนี้จบแค่นี้ก่อนนะครับ เดี๋ยวจะมาตอเรื่องการใช้งาน

#1 By นู่ส้ม (202.143.133.18) on 2009-06-23 10:32