บทนี้จะพูดถึงตัวแปรแบบ 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];

บทนี้จบแค่นี้ก่อนนะครับ เดี๋ยวจะมาตอเรื่องการใช้งาน

 

Comment



smilebig smileopen-mounthed smileconfused smilesad smileangry smiletonguequestionembarrassedsurprised smilewinkdouble winkcry

Tweet

ขอบคุนที่แบ่งความรู้ให้นะคะopen-mounthed smile

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

นู้ส้ม นอกหน้านอกตาล่ะ
ขอบคุณครับ

#2 By aMino (58.137.170.22) on 2009-08-10 10:35

ผมเรียนสายนี้อยู่ ไม่ค่อยเก่งเกี่ยวกับภาษาซีสักเท่าไหร่
ถ้าเป็นไปได้ เอาภาษาจาวา ซีพลีสๆ html ลงด้วยผมว่าจะดีมากๆๆเลยครับ ขอบคุณครับ

#3 By aMino (58.137.170.12) on 2009-08-10 10:37

#4 By A (222.123.168.89) on 2009-09-25 07:56

อ่านแล้วอธิบายได้เข้าใจดีคับ
กำลังเรียนภาษาซีอยู่พอดี
มีประโยขน์มากคับ
ขอบคุงคับ...........

#5 By A_comsci (222.123.168.89) on 2009-09-25 07:58