ตัวแปรอาร์เรย์ (Array) หรือเรียกอีกชื่อหนึ่งว่าตัวแปรชุด เป็นการจองพื้นที่ในหน่วยความจำให้กับตัวแปร เพื่อให้ตัวแปรนั้นสามารถรับข้อมูลหรือเก็บข้อมูลได้มากกว่า 1 ค่า ข้อมูลทุกตัวที่อยู่ในอาร์เรย์จะต้องเป็นข้อมูลชนิดเดียวกันเท่านั้น และตัวแปรอาร์เรย์สามารถใช้งานได้เหมือนกับตัวแปรทั่วไป
ตัวแปรอาร์เรย์ (Array) แบ่งได้เป็น 3 ชนิด
- อาร์เรย์ชนิด 1 มิติ (One-Dimensional)
- อาร์เรย์ชนิด 2 มิติ (Two-Dimensional)
- อาร์เรย์ชนิด 3 มิติ (Three-Dimensional)
สรุปได้ว่า อาร์เรย์คือกลุ่มข้อมูลชนิดเดียวกันเรียงต่อกันเป็นกลุ่มโดยใช้ชื่อตัวแปรร่วมกัน
ข้อมูลชนิดอาร์เรย์จะประกอบด้วยข้อมูลหลายๆตัวรวมกันเป็นกลุ่ม ข้อมูลแต่ละตัวในกลุ่มนั้นจะเรียกว่าองค์ประกอบ หรืออีลีเมนต์(element) หรือเซลล์ (cell) ค่าแต่ละค่าจะถูกเก็บลงยังพื้นที่ของหน่วยความจำที่แตกต่างกัน พื้นที่ในหน่วยความจำจะใช้หมายเลขลำดับเป็นตัวจำแนกความแตกต่างของค่าตัวแปรแต่ละพื้นที่ด้วยการระบุหมายเลขลำดับที่เรียกว่า ดัชนี (Index) หรือหมายเลขอ้างอิงกำกับตามหลังชื่อตัวแปร โดยใช้หมายเลขลำดับตั้งแต่ 0, 1, 2, … เป็นต้นไป
ตัวแปรอาร์เรย์ 1 มิติ (1-dimensional array) ลักษณะของตัวแปรอาร์เรย์ 1 มิติ จะเก็บข้อมูลต่อเรื่องเป็นแถว
ตัวแปรอาร์เรย์ 1 มิติ มีโครงสร้างเทียบเท่าเมตริกซ์ขนาด nx1 การประกาศตัวแปรอาร์เรย์ จะใช้เครื่องหมาย [ ] ล้อมค่าตัวเลขจำนวนเต็ม เพื่อบอกจำนวนหน่วยข้อมูลที่ต้องการ
รูปแบบตัวแปรอาร์เรย์ 1 มิติ
- ชนิดของตัวแปร (data_type) ชื่อตัวแปร[จำนวนสมาชิกที่ต้องการ] (variable_name[number])
หมายเหตุ
- เริ่มนับจาก 0 สูตร x[n-1] เช่น int a[6] หมายถึงการแบ่งช่องเก็บข้อมูล เริ่มจาก a[0] จนถึง a[5]
- (ขนาดของอาร์เรย์) ต้องระบุเป็นค่าคงที่เท่านั้น(จำนวนนับ)เป็นตัวแปรหรือนิพจน์ไม่ได้
ตัวอย่างตัวแปรอาร์เรย์ 1 มิติ เช่น
int a[] คือ อาร์เรย์ที่ประกอบด้วยข้อมูลที่มีชนิดข้อมูลเป็นประเภท ตัวเลขจำนวนเต็ม
char b[] คือ อาร์เรย์ที่ประกอบด้วยข้อมูลที่มีชนิดข้อมูลเป็นประเภท อักขระ
int a[] คือ อาร์เรย์ที่ประกอบด้วยข้อมูลที่มีชนิดข้อมูลเป็นประเภท ตัวเลขจำนวนเต็ม
char b[] คือ อาร์เรย์ที่ประกอบด้วยข้อมูลที่มีชนิดข้อมูลเป็นประเภท อักขระ
ตัวอย่างโปรแกรม การแสดงข้อมูลผ่านตัวแปรอาร์เรย์ 1 มิติ
- #include <stdio.h>
- int main()
- {
- int i[5];
- int j;
- for(j=0;j<5;j++)
- {
- i[j] = j; // เอาข้อมูลไปเก็บใน array
- }
- for(j=0;j<5;j++)
- {
- printf("i[%d] = %d \n",j,i[j]); // เอาข้อมูลใน array ออกมาพิมพ์
- }
- }
ตัวอย่าง การดูขนาดอาร์เรย์ 1 มิติในหน่วยไบต์ด้วยคำสั่ง sizeof()
- #include <stdio.h>
- int main()
- { int ages[10]; char name[50];
- double scores[20];
- printf("Size of ages = %d\n",sizeof(ages));
- printf("Size of name = %d\n" ,sizeof(name));
- printf("Size of scores = %d\n",sizeof(scores));
- printf("Size of name[0]=%d\n" ,sizeof(name[0]));
- printf("Size of ages[0]=%d\n",sizeof(ages[0]));
- }
// หมายเหตุ ข้อควรระวังสำหรับการใช้งานอาร์เรย์ เมื่อประกาศตัวแปรอาร์เรย์และกำหนดขนาดของอาร์เรย์แล้ว เราอาจจะเขียนหรืออ่านเกินกว่าสมาชิกของอาร์เรย์ได้ โดยคอมไพเลอร์จะไม่แจ้งเตือนแต่อย่างใด แต่การเขียนข้อมูลเกินกว่าขนาดของอาร์เรย์ที่จองไว้จะทำให้ข้อมูลที่เขียนลงไปนั้นจะไปทับข้อมูลอื่นหรือไปทับส่วนของโปรแกรม อันจะทำให้การทำงานของโปรแกรมเสียหายได้
ตัวอย่างโปรแกรม การแสดงข้อความแบบอาร์เรย์ 1 มิติ
- #include<stdio.h>
- int main(void)
- {
- char string[]="Hi there, Chip!";
- printf("New string is \"%s\".\n",string);
- return 0;
- }
ตัวแปรชนิดข้อความ (สตริง) (String)
ตัวแปรชนิดข้อความ (สตริง) (String) จะต้องใช้การประกาศตัวแปรอาร์เรย์ 1 มิติ เนื่องจากเพื่อให้เกิดการเก็บข้อมูลเป็นข้อความมีความจำเป็นที่จะต้องใช้ตัวแปรชนิดอาร์เรย์เข้ามาใช้งาน ดังนั้น สตริง หรือ สายตัวอักษร คือ ข้อมูลที่ประกอบไปด้วยค่าคงที่ชนิดตัวอักษรเรียงต่อเนื่องกันไป โดยมีจุดสิ้นสุดที่ตัวอักษร Null Character (‘\0’) ซึ่งมีค่ารหัสเป็น 0 เป็นตัวบ่งบอกจุดสิ้นสุดของข้อความ (string) (หรือเรียกว่า end character)
รูปแบบการเก็บตัวแปรชนิดข้อความ (สตริง) (String)
ประกาศชนิดอักขระ (char) ชื่อตัวแปรข้อความ[ความยาวของข้อความ] stringVariable[ length_of_string ]
*** อาจไม่ต้องใส่จำนวนตัวเลขภายในวงเล็บบอกจำนวนสมาชิกก็ได้
ตัวอย่างการประกาศตัวแปรชนิดข้อความ (สตริง) (String) เช่น
- char str1[] = {‘A’, ‘B’, ‘C’, ‘D’, ‘\0’};
- char str2[10] = {‘A’, ‘B’, ‘C’, ‘D’, ‘\0’};
- char str3[] = ”ABCD”;
- char a[7] = “Hello!”; //เก็บค่าตั้งแต่ a[0] จนถึง a[6] คือ a[0]=H , a[1]=e , a[2]=l , a[3]=l , a[4]=o , a[5]=! , a[6]=\0
หมายเหตุ
- การกำหนดค่าของอาร์เรย์ให้เป็นข้อความ จะไม่สามารถใช้โอเปอร์เรเตอร์ = ได้โดยตรง
- ถ้าต้องการเก็บข้อความใดๆ ลงในอาร์เรย์ ต้องใช้วิธีการเรียกใช้ฟังก์ชัน เช่น ฟังก์ชันมาตรฐานการคัดลอกข้อความ strcpy( ) ที่นิยามไว้ใน <string.h>
ตัวอย่างโปรแกรม การกำหนดค่าของสตริงโดยใช้ฟังก์ชัน strcpy()
- #include <stdio.h>
- #include <string.h>
- int main()
- {
- char a[20] = "XXXXXXXXXX"; // 10 of X
- printf("%s\n", a);
- strcpy(a, "ABCD");
- printf("%s\n", a);
- strcpy(a, "0123456789");
- printf("%s\n", a);
- return 0;
- }
ตัวอย่างโปรแกรม การนับจำนวนตัวอักษรโดยเรียกใช้ฟังก์ชั่น strlen()
- #include <stdio.h>
- #include <string.h>
- int main()
- {
- char texts[4][20];
- int i;
- for(i=0;i<4;i++) {
- printf("Enter text %d : ",i+1);
- scanf("%s",&texts[i]);
- }
- for(i=0;i<4;i++)
- printf("%s : %d\n",texts[i],strlen(texts[i]));
- return 0;
- }
หมายเหตุ
- ค่าคงที่ข้อความสตริงจะเขียนล้อมไว้ด้วยเครื่องหมายสองขีดหรือฟันหนู (”) และค่าคงที่ตัวอักษรจะเขียนล้อมไว้ด้วยเครื่องหมายขีดเดียว (')
- การประกาศตัวแปรชนิดอาร์เรย์หากมีส่วนที่เหลือไม่ได้ใช้งานจะถูกเซ็ตเป็นศูนย์อัตโนมัติ เพราะส่วนที่เหลือยังไม่ได้การกำหนดค่าเริ่มต้นให้
ตัวอย่างโปรแกรม
ตัวอย่างโปรแกรม สร้างไฟล์ชื่อ program.txt พร้อมเก็บข้อความที่ต้องการโดยเก็บแบบอาร์เรย์ได้ 1000 อักษร
- #include <stdio.h>
- #include <stdlib.h> /* For exit() function */
- int main()
- {
- char c[1000];
- FILE *fptr;
- fptr=fopen("program.txt","w");
- if(fptr==NULL) {
- printf("Error!");
- exit(1);
- }
- printf("Enter a sentence:\n");
- gets(c);
- fprintf(fptr,"%s",c);
- fclose(fptr);
- return 0;
- }
ตัวอย่างโปรแกรม อ่านข้อความจากไฟล์ชื่อ program.txt โดยอ่านแบบอาร์เรย์ได้ 1000 อักษร
- #include <stdio.h>
- #include <stdlib.h> /* For exit() function*/
- int main()
- {
- char c[1000];
- FILE *fptr;
- if ((fptr=fopen("program.txt","r"))==NULL){
- printf("Error! opening file");
- exit(1); /* Program exits if file pointer returns NULL. */
- }
- fscanf(fptr,"%[^\n]",c);
- printf("Data from file:\n%s",c);
- fclose(fptr);
- return 0;
- }
ไม่มีความคิดเห็น:
แสดงความคิดเห็น