ความรู้เกี่ยวกับอาร์เรย์
Array ในภาษา C
1. อาร์เรย์ 1 มิติ
Array คือตัวแปรในภาษา C ที่ใช้ในกรณีที่ต้องการตัวแปรเยอะ ๆ ซึ่งมีรูปแบบในการประกาศตัวแปรชนิดอาร์เรย์คล้ายกับตัวแปรทั่วไป คือ ชนิดข้อมูล ชื่อตัวแปร [ ];
เช่น int num[10]; นั่นคือมีตัวแปรของจำนวนจริง 10 ตัว คือ num[0] , num[1], num[2], num[3], num[4], num[5], num[6], num[7], num[8], num[9]
char name [10] เป็นตัวแปรอาร์เรย์แบบสตริงมีความหมายสองแบบ คือ
1. แบบตัวอักษร นั่นคือ เป็นตัวแปรของตัวอักษร 10 ตัว คือ name [0], name [1], name [2], name [3], name [4], name [5], name [6], name [7], name [8], name [9]
2. แบบข้อความ นั่นคือ เป็นตัวแปรของสตริง 1 ตัว ใช้เก็บตัวอักษรได้ 9 ตัว เนื่องจาก index สุดท้ายของตัวแปรเก็บอักขระ null character หรือ 0 เพื่อบ่งบอกการสิ้นสุดข้อความ
เทคนิคการจัดการตัวแปรชนิดอาร์เรย์
num [i] ลองคิดซิว่า ถ้า i เปลี่ยนแปลงจาก 0 ไปเรื่อย ๆ จนถึง n เราจะมีตัวแปรไว้ใช้กี่ตัว?
2.อาร์เรย์ 2 มิติ
มีรูปแบบในการประกาศตัวแปร ชนิดข้อมูล ชื่อตัวแปร [ ][ ]; มีลักษณะคล้ายกับอาร์เรย์ในหนึ่งมิติ เช่น
int num[3][3]; นั่นคือ มีตัวแปรของจำนวนจริง 9 ตัว คือ num[0][0], num[0][1], num[0][2],num[1][0], num1][1], num[1][2],num[2][0], num[2][1], num[2][2]
char name[3][10]; มีความหมาย 2 กรณีเช่นเคย นั่นคือ
1.มีตัวแปรแบบตัวอักษร ทั้งหมด 30 ตัวอักษร
2.มีตัวแปรแบบสตริง 3 ตัว ตัวละ 9 ตัวอักษร
3.เทคนิคการวนรับค่าของตัวแปรอาร์เรย์ 1 มิติ num[n]
for (i=0; i<n; i++)
{ do { printf(“Input num [i] : ”,i);
scanf(“%d”,&num[i]);
} while(num[i]<10|| num[i]>99);
}
4.เทคนิคการวนรับค่าของตัวแปรอาร์เรย์ 2 มิติ num[m][n]
for (i=0; i< m; i++)
for ( j = 0 ; j < n ; j++)
{ do { printf(“Input num [i] : ”,i,j);
scanf(“%d”,&num[i][j]);
} while(num[i][j]<10|| num[i][j]>99);
}
5. เทคนิคการวิเคราะห์ตัวแปรอาร์เรย์ชนิดสตริง
กำหนดให้ char str[20] หมายถึง มี sizeof เท่ากับ 20
มีความสามารถในการเก็บตัวอักษรได้ 19 ตัวอักษร
กำหนดให้ char str[ ] = “Suranaree University of Technology” ;
หมายถึง มี sizeof มากกว่าจำนวนอักษรอยู่ 1 นั่นคือ 35
และ str[0] เก็บตัวอักษร S str[18] เก็บตัวอักษร t
str[1] เก็บตัวอักษร u str[19] เก็บตัวอักษร y
str[2] เก็บตัวอักษร r str[20] เก็บตัวอักษร
str[3] เก็บตัวอักษร a str[21] เก็บตัวอักษร o
str[4] เก็บตัวอักษร n str[22] เก็บตัวอักษร f
str[5] เก็บตัวอักษร a str[23] เก็บตัวอักษร
str[6] เก็บตัวอักษร r str[24] เก็บตัวอักษร T
str[7] เก็บตัวอักษร e str[25] เก็บตัวอักษร e
str[8] เก็บตัวอักษร e str[26] เก็บตัวอักษร c
str[9] เก็บตัวอักษร str[27] เก็บตัวอักษร h
str[10] เก็บตัวอักษร U str[28] เก็บตัวอักษร n
str[11] เก็บตัวอักษร n str[29] เก็บตัวอักษร o
str[12] เก็บตัวอักษร i str[30] เก็บตัวอักษร l
str[13] เก็บตัวอักษร v str[31] เก็บตัวอักษร o
str[14] เก็บตัวอักษร e str[32] เก็บตัวอักษร g
str[15] เก็บตัวอักษร r str[33] เก็บตัวอักษร y
str[16] เก็บตัวอักษร s str[34] เก็บตัวอักษร null character
str[17] เก็บตัวอักษร i
Pointer ในภาษา C
Pointer หมายถึงตัวชี้ ซึ่งในภาษา C หมายถึงตัวแปรที่เก็บ address หรือที่อยู่ของข้อมูล หรือเรียกว่าวิธีการที่เข้าถึงข้อมูลแบบทางอ้อม
1.การประกาศตัวแปร pointer รูปแบบ ชนิดข้อมูล *ชื่อ pointer;
เช่น int num, *p; หมายถึง ประกาศตัวแปรชนิด pointer ชื่อ p สำหรับใช้กับจำนวนจริง
char ch, *pc; หมายถึง ประกาศตัวแปรชนิด pointer ชื่อ p สำหรับใช้กับตัวอักษร
2. การใช้งาน pointer รูปแบบ ชื่อ pointer =&ตัวแปร;
เช่น p=# pc=&ch;
ในกรณี Pointer ของอาร์เรย์ เช่น int num[5], * p;
ในการใช้งาน Pointer จะถูกชี้ที่ตำแหน่งแรก นั้นคือ p = num; หมายถึง p = &num[0];
ในกรณีที่ต้องการชีตำแหน่งอื่นจะต้องกำหนด index เช่น p =&num[2]
3.ตำแหน่งของ Pointer
เช่น int num[5] = { “ 2,4,6,8,10} , *p;
p=num;
1. อาร์เรย์ 1 มิติ
Array คือตัวแปรในภาษา C ที่ใช้ในกรณีที่ต้องการตัวแปรเยอะ ๆ ซึ่งมีรูปแบบในการประกาศตัวแปรชนิดอาร์เรย์คล้ายกับตัวแปรทั่วไป คือ ชนิดข้อมูล ชื่อตัวแปร [ ];
เช่น int num[10]; นั่นคือมีตัวแปรของจำนวนจริง 10 ตัว คือ num[0] , num[1], num[2], num[3], num[4], num[5], num[6], num[7], num[8], num[9]
char name [10] เป็นตัวแปรอาร์เรย์แบบสตริงมีความหมายสองแบบ คือ
1. แบบตัวอักษร นั่นคือ เป็นตัวแปรของตัวอักษร 10 ตัว คือ name [0], name [1], name [2], name [3], name [4], name [5], name [6], name [7], name [8], name [9]
2. แบบข้อความ นั่นคือ เป็นตัวแปรของสตริง 1 ตัว ใช้เก็บตัวอักษรได้ 9 ตัว เนื่องจาก index สุดท้ายของตัวแปรเก็บอักขระ null character หรือ 0 เพื่อบ่งบอกการสิ้นสุดข้อความ
เทคนิคการจัดการตัวแปรชนิดอาร์เรย์
num [i] ลองคิดซิว่า ถ้า i เปลี่ยนแปลงจาก 0 ไปเรื่อย ๆ จนถึง n เราจะมีตัวแปรไว้ใช้กี่ตัว?
2.อาร์เรย์ 2 มิติ
มีรูปแบบในการประกาศตัวแปร ชนิดข้อมูล ชื่อตัวแปร [ ][ ]; มีลักษณะคล้ายกับอาร์เรย์ในหนึ่งมิติ เช่น
int num[3][3]; นั่นคือ มีตัวแปรของจำนวนจริง 9 ตัว คือ num[0][0], num[0][1], num[0][2],num[1][0], num1][1], num[1][2],num[2][0], num[2][1], num[2][2]
char name[3][10]; มีความหมาย 2 กรณีเช่นเคย นั่นคือ
1.มีตัวแปรแบบตัวอักษร ทั้งหมด 30 ตัวอักษร
2.มีตัวแปรแบบสตริง 3 ตัว ตัวละ 9 ตัวอักษร
3.เทคนิคการวนรับค่าของตัวแปรอาร์เรย์ 1 มิติ num[n]
for (i=0; i<n; i++)
{ do { printf(“Input num [i] : ”,i);
scanf(“%d”,&num[i]);
} while(num[i]<10|| num[i]>99);
}
4.เทคนิคการวนรับค่าของตัวแปรอาร์เรย์ 2 มิติ num[m][n]
for (i=0; i< m; i++)
for ( j = 0 ; j < n ; j++)
{ do { printf(“Input num [i] : ”,i,j);
scanf(“%d”,&num[i][j]);
} while(num[i][j]<10|| num[i][j]>99);
}
5. เทคนิคการวิเคราะห์ตัวแปรอาร์เรย์ชนิดสตริง
กำหนดให้ char str[20] หมายถึง มี sizeof เท่ากับ 20
มีความสามารถในการเก็บตัวอักษรได้ 19 ตัวอักษร
กำหนดให้ char str[ ] = “Suranaree University of Technology” ;
หมายถึง มี sizeof มากกว่าจำนวนอักษรอยู่ 1 นั่นคือ 35
และ str[0] เก็บตัวอักษร S str[18] เก็บตัวอักษร t
str[1] เก็บตัวอักษร u str[19] เก็บตัวอักษร y
str[2] เก็บตัวอักษร r str[20] เก็บตัวอักษร
str[3] เก็บตัวอักษร a str[21] เก็บตัวอักษร o
str[4] เก็บตัวอักษร n str[22] เก็บตัวอักษร f
str[5] เก็บตัวอักษร a str[23] เก็บตัวอักษร
str[6] เก็บตัวอักษร r str[24] เก็บตัวอักษร T
str[7] เก็บตัวอักษร e str[25] เก็บตัวอักษร e
str[8] เก็บตัวอักษร e str[26] เก็บตัวอักษร c
str[9] เก็บตัวอักษร str[27] เก็บตัวอักษร h
str[10] เก็บตัวอักษร U str[28] เก็บตัวอักษร n
str[11] เก็บตัวอักษร n str[29] เก็บตัวอักษร o
str[12] เก็บตัวอักษร i str[30] เก็บตัวอักษร l
str[13] เก็บตัวอักษร v str[31] เก็บตัวอักษร o
str[14] เก็บตัวอักษร e str[32] เก็บตัวอักษร g
str[15] เก็บตัวอักษร r str[33] เก็บตัวอักษร y
str[16] เก็บตัวอักษร s str[34] เก็บตัวอักษร null character
str[17] เก็บตัวอักษร i
Pointer ในภาษา C
Pointer หมายถึงตัวชี้ ซึ่งในภาษา C หมายถึงตัวแปรที่เก็บ address หรือที่อยู่ของข้อมูล หรือเรียกว่าวิธีการที่เข้าถึงข้อมูลแบบทางอ้อม
1.การประกาศตัวแปร pointer รูปแบบ ชนิดข้อมูล *ชื่อ pointer;
เช่น int num, *p; หมายถึง ประกาศตัวแปรชนิด pointer ชื่อ p สำหรับใช้กับจำนวนจริง
char ch, *pc; หมายถึง ประกาศตัวแปรชนิด pointer ชื่อ p สำหรับใช้กับตัวอักษร
2. การใช้งาน pointer รูปแบบ ชื่อ pointer =&ตัวแปร;
เช่น p=# pc=&ch;
ในกรณี Pointer ของอาร์เรย์ เช่น int num[5], * p;
ในการใช้งาน Pointer จะถูกชี้ที่ตำแหน่งแรก นั้นคือ p = num; หมายถึง p = &num[0];
ในกรณีที่ต้องการชีตำแหน่งอื่นจะต้องกำหนด index เช่น p =&num[2]
3.ตำแหน่งของ Pointer
เช่น int num[5] = { “ 2,4,6,8,10} , *p;
p=num;
เมื่อประกาศการใช้งาน pointer พร้อมกับชี้ตัวแปร จะเกิดวิธีเข้าถึงข้อมูลได้ 2 วิธีคือ ทางตรงแบบผ่านตัวแปร และทางอ้อมผ่านทาง pointer ซึ่งทำหน้าที่เก็บที่อยู่ของข้อมูล
4. การกระทำของ Pointer
4.1 การแสดงทิ่อยู่หลักของ pointer เช่น printf(“ %p”,&ptr);
4.2 การแสดงทิ่อยู่ทั่วไปของ pointer เช่น printf(“ %p”,&ptr);
4.3 การแสดงข้อมูลที่ pointer อยู่ เช่น printf(“ %p”,*ptr);
4.4 การเข้าถึงข้อมูลผ่าน pointer เช่น sum = *ptr + 5 ;
5. การกระทำข้อมูลผ่าน pointer แบบ pointer ชี้ตำแหน่งเดิม
int num[5] = { “ 2,4,6,8,10} , *ptr, i ;
ptr = num;
for( i =0; i<5; i++)
printf(“%d ”,*(ptr+i) );
5. การกระทำข้อมูลผ่าน pointer แบบ pointer เลื่อนตำแหน่ง
int num[5] = { “ 2,4,6,8,10} , *ptr, i ;
ptr = num;
for( i =0; i<5; i++)
printf(“%d ”,*(ptr++) );
4. การกระทำของ Pointer
4.1 การแสดงทิ่อยู่หลักของ pointer เช่น printf(“ %p”,&ptr);
4.2 การแสดงทิ่อยู่ทั่วไปของ pointer เช่น printf(“ %p”,&ptr);
4.3 การแสดงข้อมูลที่ pointer อยู่ เช่น printf(“ %p”,*ptr);
4.4 การเข้าถึงข้อมูลผ่าน pointer เช่น sum = *ptr + 5 ;
5. การกระทำข้อมูลผ่าน pointer แบบ pointer ชี้ตำแหน่งเดิม
int num[5] = { “ 2,4,6,8,10} , *ptr, i ;
ptr = num;
for( i =0; i<5; i++)
printf(“%d ”,*(ptr+i) );
5. การกระทำข้อมูลผ่าน pointer แบบ pointer เลื่อนตำแหน่ง
int num[5] = { “ 2,4,6,8,10} , *ptr, i ;
ptr = num;
for( i =0; i<5; i++)
printf(“%d ”,*(ptr++) );