อาร์เรย์ใน C++: การประกาศ การกำหนดค่าเริ่มต้น และตัวชี้ (ตัวอย่าง)
⚡ สรุปอย่างชาญฉลาด
อาร์เรย์ใน C++ อาร์เรย์คือกลุ่มขององค์ประกอบที่มีชนิดข้อมูลเดียวกันซึ่งจัดเก็บอยู่ในตำแหน่งหน่วยความจำที่ต่อเนื่องกัน ในที่นี้คุณจะได้เรียนรู้วิธีการประกาศ การกำหนดค่าเริ่มต้น และการเข้าถึงอาร์เรย์ ชนิดของอาร์เรย์ ตลอดจนข้อดีและข้อเสียของอาร์เรย์

อาร์เรย์คืออะไร?
อาร์เรย์เป็นโครงสร้างข้อมูลที่จัดเก็บองค์ประกอบของประเภทข้อมูลเดียวกันตามลำดับ ก C++ อาร์เรย์มีขนาดคงที่
คุณสามารถดูอาร์เรย์เป็นชุดของตัวแปรประเภทข้อมูลที่คล้ายกันได้ แทนที่จะประกาศตัวแปรแต่ละตัวและกำหนดค่าแยกกัน คุณสามารถประกาศตัวแปรหนึ่งตัว (อาร์เรย์) และเพิ่มค่าของตัวแปรต่างๆ เข้าไปได้ แต่ละมูลค่าเพิ่มในอาร์เรย์จะถูกระบุโดยดัชนี
ทำไมเราต้องมีอาร์เรย์?
อาร์เรย์ มีความสำคัญมากในภาษาการเขียนโปรแกรมใดๆ ซึ่งช่วยให้จัดเก็บตัวแปรหรือรวบรวมข้อมูลประเภทข้อมูลเดียวกันไว้ด้วยกันได้สะดวกยิ่งขึ้น แทนที่จะจัดเก็บแยกกัน แต่ละค่าของอาร์เรย์จะถูกเข้าถึงแยกกัน
ประกาศอาร์เรย์ใน C++
การประกาศอาร์เรย์ใน C++ เกี่ยวข้องกับการระบุประเภทและจำนวนองค์ประกอบที่จะจัดเก็บโดยอาร์เรย์ ไวยากรณ์:
type array-Name [ array-Size ];
กฎสำหรับการประกาศอาร์เรย์มิติเดียว C++.
- ประเภทงาน: ประเภทคือประเภทขององค์ประกอบที่จะจัดเก็บไว้ในอาร์เรย์และจะต้องถูกต้อง C++ ประเภทข้อมูล.
- ชื่ออาร์เรย์: array-Name คือชื่อที่จะกำหนดให้กับอาร์เรย์
- อาร์เรย์-ขนาด: array-Size คือจำนวนองค์ประกอบที่จะจัดเก็บไว้ในอาร์เรย์ ต้องเป็นจำนวนเต็มและมากกว่า 0
ตัวอย่างเช่น คุณสามารถสร้างอาร์เรย์ชื่อ age และเก็บอายุของนักเรียน 5 คนได้ดังนี้:
int age[5];
อายุอาร์เรย์จะเก็บจำนวนเต็ม 5 ตัวซึ่งแสดงถึงอายุของนักเรียนที่แตกต่างกัน
การเริ่มต้นอาร์เรย์
การเริ่มต้นอาร์เรย์เป็นกระบวนการในการกำหนด/จัดเก็บองค์ประกอบให้กับอาร์เรย์ การเริ่มต้นสามารถทำได้ในคำสั่งเดียวหรือทีละรายการ โปรดทราบว่าองค์ประกอบแรกในอาร์เรย์จะถูกเก็บไว้ที่ดัชนี 0 ในขณะที่องค์ประกอบสุดท้ายจะถูกเก็บไว้ที่ดัชนี n-1 โดยที่ n คือจำนวนองค์ประกอบทั้งหมดในอาร์เรย์
ในกรณีของอาร์เรย์อายุ องค์ประกอบแรกจะถูกเก็บไว้ที่ดัชนี 0 ในขณะที่องค์ประกอบสุดท้ายจะถูกเก็บไว้ที่ดัชนี 4
ให้เราใช้อาร์เรย์อายุเพื่อสาธิตวิธีการเริ่มต้นอาร์เรย์สามารถทำได้:
int age[5] = {19, 18, 21, 20, 17};
จำนวนองค์ประกอบทั้งหมดภายใน { } ต้องไม่เกินค่าที่ระบุภายใน [ ] องค์ประกอบ 19 อยู่ที่ดัชนี 0, 18 ที่ดัชนี 1, 21 ที่ดัชนี 2, 20 ที่ดัชนี 3 และ 17 ที่ดัชนี 4 หากคุณไม่ระบุจำนวนองค์ประกอบที่จะจัดเก็บไว้ในอาร์เรย์ภายใน [ ] อาร์เรย์ จะมีขนาดใหญ่พอที่จะเก็บองค์ประกอบที่เพิ่มภายใน { } เท่านั้น ตัวอย่างเช่น:
int age[] = {19, 18, 21, 20, 17};
คำสั่งข้างต้นจะสร้างอาร์เรย์เดียวกันกับคำสั่งก่อนหน้าทุกประการ คุณยังสามารถกำหนดองค์ประกอบหนึ่งให้กับอาร์เรย์โดยใช้ดัชนีของมันได้ ตัวอย่างเช่น:
age[3] = 20;
ข้อความข้างต้นจะเก็บค่า 20 ไว้ที่ดัชนี 3 ของอาร์เรย์ชื่อ age ซึ่งหมายความว่า 20 จะเป็น 4th องค์ประกอบของอาร์เรย์
ประเภทของอาร์เรย์
มีสองประเภทเป็น C++ อาร์เรย์:
- อาร์เรย์มิติเดียว
- อาร์เรย์หลายมิติ
- ตัวชี้ไปยังอาร์เรย์
อาร์เรย์มิติเดียว
นี่คืออาร์เรย์ที่รายการข้อมูลจัดเรียงเชิงเส้นในมิติเดียวเท่านั้น โดยทั่วไปเรียกว่าอาร์เรย์ 1 มิติ ไวยากรณ์:
datatype array-name[size];
- ชื่ออาร์เรย์คือชื่อของอาร์เรย์
- ขนาดคือจำนวนรายการที่จะจัดเก็บไว้ในอาร์เรย์
ตัวอย่างเช่น:
#include <iostream> using namespace std; int main() { int age[5] = { 19, 18, 21, 20, 17 }; for (int x = 0; x < 5; x++) { cout <<age[x]<<"\n"; } }
Output:
นี่คือภาพหน้าจอของรหัส:
Code คำอธิบาย:
- รวมไฟล์ส่วนหัว iostream ไว้ในโค้ดของเรา มันจะช่วยให้เราอ่านและเขียนไปยังคอนโซลได้
- รวมเนมสเปซมาตรฐานเพื่อใช้คลาสและฟังก์ชันโดยไม่ต้องเรียกมัน
- การเรียกใช้ฟังก์ชัน main() ภายในที่ควรเพิ่มตรรกะของโปรแกรม
- จุดเริ่มต้นของฟังก์ชัน main()
- การประกาศอาร์เรย์ชื่อ age เพื่อเก็บจำนวนเต็ม 5 ตัว จำนวนเต็ม 5 ตัวก็ถูกเตรียมใช้งานเช่นกัน
- สร้างตัวแปรจำนวนเต็ม x โดยใช้ for loop
- จุดเริ่มต้นของเนื้อความของ for loop
- การใช้ตัวแปรลูป x เพื่อวนซ้ำค่าของอายุอาเรย์และพิมพ์ลงบนคอนโซล “\n” เป็นอักขระขึ้นบรรทัดใหม่และพิมพ์ขึ้นบรรทัดใหม่หลังจากการวนซ้ำทุกครั้ง
- ส่วนปลายของลำตัว สำหรับห่วง.
- ส่วนท้ายของฟังก์ชัน main()
อาร์เรย์หลายมิติ
นี่คืออาร์เรย์ที่รายการข้อมูลถูกจัดเรียงเพื่อสร้างอาร์เรย์ของอาร์เรย์ อาร์เรย์หลายมิติสามารถมีจำนวนมิติเท่าใดก็ได้ แต่อาร์เรย์สองมิติและสามมิติเป็นเรื่องปกติ ไวยากรณ์:
datatype array-name[d1][d2][d3]...[dn];
ชื่ออาร์เรย์คือชื่อของอาร์เรย์ที่จะมี n มิติ ตัวอย่างเช่น:
อาร์เรย์สองมิติ
อาร์เรย์ 2 มิติจะจัดเก็บข้อมูลในรายการที่มีอาร์เรย์ 1 มิติ ซึ่งเป็นเมทริกซ์ที่มีแถวและคอลัมน์ หากต้องการประกาศอาร์เรย์ 2 มิติ ให้ใช้รูปแบบต่อไปนี้:
type array-Name [ x ][ y ];
ประเภทจะต้องถูกต้อง C++ ชนิดข้อมูล ดูอาร์เรย์ 2 มิติเป็นตาราง โดยที่ x หมายถึงจำนวนแถว ในขณะที่ y หมายถึงจำนวนคอลัมน์ ซึ่งหมายความว่า คุณสามารถระบุแต่ละองค์ประกอบในอาร์เรย์ 2 มิติได้โดยใช้รูปแบบ a[x][y] โดยที่ x คือจำนวนแถว และ y คือจำนวนคอลัมน์ที่มีองค์ประกอบนั้นอยู่
นี่คือตัวอย่างวิธีการเริ่มต้นอาร์เรย์ 2D:
int a[2][3] = {
{0, 2, 1} , /* row at index 0 */
{4, 3, 7} , /* row at index 1 */
};
ในตัวอย่างข้างต้น เรามีอาร์เรย์ 2 มิติซึ่งสามารถมองเป็นเมทริกซ์ขนาด 2×3 ได้ มี 2 แถว 3 คอลัมน์ องค์ประกอบ 0 สามารถเข้าถึงได้ในฐานะ a[0][1] เนื่องจากตั้งอยู่ที่จุดตัดของแถวที่มีดัชนี 0 และคอลัมน์ที่มีดัชนี 1 องค์ประกอบ 3 สามารถเข้าถึงได้ในฐานะ a[1][2] เนื่องจากตั้งอยู่ที่ จุดตัดของแถวที่จัดทำดัชนี 1 และคอลัมน์ที่จัดทำดัชนี 2
โปรดทราบว่าเราเพียงเพิ่มเครื่องหมายปีกกาเพื่อแยกแยะแถวขององค์ประกอบต่างๆ การเริ่มต้นสามารถทำได้ดังนี้:
int a[2][3] = {0, 2, 1, 4, 3, 7};
};
ดังต่อไปนี้ C++ ตัวอย่างแสดงวิธีการเริ่มต้นและดำเนินการอาร์เรย์ 2 มิติ:
#include <iostream> using namespace std; int main() { // a 2x3 array int a[3][2] = { {0, 2}, {1, 4}, {3, 7} }; // traverse array elements for (int i=0; i<3; i++) for (int j=0; j<2; j++) { cout << "a[" <<i<< "][" <<j<< "]: "; cout << a[i][j] << endl; } return 0; }
Output:
นี่คือภาพหน้าจอของโค้ดด้านบน:
Code คำอธิบาย:
- รวมไฟล์ส่วนหัว iostream ไว้ในโค้ดของเรา มันจะช่วยให้เราอ่านและเขียนไปยังคอนโซลได้
- รวมเนมสเปซมาตรฐานเพื่อใช้คลาสและฟังก์ชันโดยไม่ต้องเรียกมัน
- การเรียกใช้ฟังก์ชัน main() ภายในโค้ดที่ควรเพิ่ม
- จุดเริ่มต้นของฟังก์ชัน main()
- ความคิดเห็น ที่ C++ คอมไพเลอร์จะข้ามสิ่งนี้
- การประกาศอาร์เรย์ 2 มิติ จำนวน 3 แถว และ 2 คอลัมน์ รายการได้ถูกเพิ่มเข้าไปในอาร์เรย์ด้วย
- ความคิดเห็น ที่ C++ คอมไพเลอร์จะข้ามสิ่งนี้
- การสร้างตัวแปรที่ฉันใช้สำหรับการวนซ้ำ ตัวแปรนี้จะวนซ้ำดัชนีแถวของอาร์เรย์
- การสร้างตัวแปร j โดยใช้ for a loop ตัวแปรนี้จะวนซ้ำดัชนีคอลัมน์ของอาร์เรย์
- จุดเริ่มต้นของตัวลูป
- พิมพ์ค่าของตัวแปร i และ j บนคอนโซลภายในวงเล็บเหลี่ยมบนคอนโซล
- พิมพ์ค่าที่เก็บไว้ที่ดัชนี [i][j] ของอาร์เรย์ a
- ส่วนปลายของตัวห่วง
- ฟังก์ชัน main() ควรส่งคืนค่าจำนวนเต็มหากโปรแกรมทำงานได้ดี
- ส่วนท้ายของฟังก์ชัน main()
อาร์เรย์สามมิติ
อาร์เรย์ 3 มิติคืออาร์เรย์ของอาร์เรย์ แต่ละองค์ประกอบในอาร์เรย์ 3 มิติจะถูกระบุโดยชุดดัชนี 3 รายการ ในการเข้าถึงองค์ประกอบของอาร์เรย์ 3 มิติ เราใช้สาม for loops ตัวอย่างเช่น:
#include<iostream> using namespace std; void main() { int a[2][3][2] = {{{4, 8},{2, 4},{1, 6}}, {{3, 6},{5, 4},{9, 3}}}; cout << "a[0][1][0] = " << a[0][1][0] << "\n"; cout << "a[0][1][1] = " << a[0][1][1] << "\n"; }
Output:
นี่คือภาพหน้าจอของรหัส:
Code คำอธิบาย:
- รวมไฟล์ส่วนหัว iostream ไว้ในโค้ดของเรา มันจะช่วยให้เราอ่านและเขียนไปยังคอนโซลได้
- รวมเนมสเปซมาตรฐานเพื่อใช้คลาสและฟังก์ชันโดยไม่ต้องเรียกมัน
- การเรียกใช้ฟังก์ชัน main() ภายในที่ควรเพิ่มตรรกะของโปรแกรม
- จุดเริ่มต้นของฟังก์ชัน main()
- การประกาศอาร์เรย์ 3 มิติชื่อขนาด 2x3x2 ค่าของอาร์เรย์ยังได้รับการเตรียมใช้งานด้วย
- การเข้าถึงรายการที่จัดเก็บไว้ที่ดัชนี [0] [1] [0] ของอาร์เรย์และพิมพ์บนคอนโซล
- การเข้าถึงรายการที่จัดเก็บไว้ที่ดัชนี [0] [1] [1] ของอาร์เรย์และพิมพ์บนคอนโซล
- ส่วนท้ายของฟังก์ชัน main()
ตัวชี้ไปยังอาร์เรย์
A ตัวชี้ เป็นตัวแปรที่เก็บที่อยู่ นอกเหนือจากการใช้พอยน์เตอร์เพื่อจัดเก็บที่อยู่ของตัวแปรแล้ว เราสามารถใช้พอยน์เตอร์เพื่อจัดเก็บที่อยู่ของเซลล์อาร์เรย์ได้ ชื่อของอาร์เรย์ชี้ไปที่องค์ประกอบแรกอย่างต่อเนื่อง พิจารณาคำประกาศที่ให้ไว้ด้านล่าง:
int age[5];
อายุคือตัวชี้ไปยัง $age[0] ซึ่งเป็นที่อยู่ขององค์ประกอบแรกของอาร์เรย์ที่มีชื่อว่า age ลองพิจารณาตัวอย่างต่อไปนี้:
#include <iostream> using namespace std; int main() { int *john; int age[5] = { 19, 18, 21, 20, 17 }; john = age; cout << john << "\n"; cout << *john; }
Output:
โปรดทราบว่าค่าแรกของเอาต์พุตด้านบนอาจส่งคืนค่าที่แตกต่างกัน ขึ้นอยู่กับที่อยู่ที่กำหนดให้กับองค์ประกอบแรกของอาร์เรย์ในหน่วยความจำของคอมพิวเตอร์ของคุณ
นี่คือภาพหน้าจอของรหัส:
Code คำอธิบาย:
- รวมไฟล์ส่วนหัว iostream ไว้ในโค้ดของเรา มันจะช่วยให้เราอ่านและเขียนไปยังคอนโซลได้
- รวมเนมสเปซมาตรฐานเพื่อใช้คลาสและฟังก์ชันโดยไม่ต้องเรียกมัน
- การเรียกใช้ฟังก์ชัน main() ภายในที่ควรเพิ่มตรรกะของโปรแกรม
- จุดเริ่มต้นของฟังก์ชัน main()
- การประกาศตัวแปรพอยน์เตอร์ชื่อ *john
- การประกาศอาร์เรย์จำนวนเต็มชื่ออายุเพื่อเก็บจำนวนเต็ม 5 ตัว ค่าของจำนวนเต็มได้ถูกเตรียมใช้งานแล้วเช่นกัน
- การกำหนดค่าให้กับตัวแปร john ค่าของที่อยู่ของรายการที่เก็บไว้ในดัชนีแรกของอายุอาร์เรย์
- การพิมพ์ค่าของตัวแปร john ซึ่งเป็นที่อยู่ของรายการที่จัดเก็บไว้ในดัชนีแรกของอายุอาร์เรย์
- การพิมพ์ค่าแรกที่เก็บไว้ในอายุอาเรย์
- ส่วนท้ายของฟังก์ชัน main()
ชื่ออาร์เรย์สามารถใช้เป็นตัวชี้ค่าคงที่ได้ และในทางกลับกันก็เป็นจริงเช่นกัน ซึ่งหมายความว่าคุณสามารถเข้าถึงค่าที่เก็บไว้ที่ดัชนี 3 ของอายุอาเรย์ด้วย *(age + 3) ตัวอย่างเช่น:
#include <iostream> using namespace std; int main() { // an array of 5 elements. int age[5] = { 19, 18, 21, 20, 17 }; int *p; p = age; // output array values cout << "Using pointer: " << endl; for (int x=0; x<5; x++) { cout << "*(p + " << x << ") : "; cout << *(p + x) << endl; } cout << "Using age as address: " << endl; for (int x = 0; x < 5; x++) { cout << "*(age + " << x << ") : "; cout << *(age + x) << endl; } return 0; }
Output:
นี่คือภาพหน้าจอของรหัส:
Code คำอธิบาย:
- รวมไฟล์ส่วนหัว iostream ไว้ในโค้ดของเรา มันจะช่วยให้เราอ่านและเขียนไปยังคอนโซลได้
- รวมเนมสเปซมาตรฐานเพื่อใช้คลาสและฟังก์ชันโดยไม่ต้องเรียกมัน
- การเรียกใช้ฟังก์ชัน main() และจุดเริ่มต้นของส่วนเนื้อหาของฟังก์ชัน main()
- ความคิดเห็น ที่ C++ คอมไพเลอร์จะข้ามสิ่งนี้
- การประกาศอาร์เรย์ชื่อ age เพื่อเก็บจำนวนเต็ม 5 ตัว
- การสร้างตัวชี้จำนวนเต็ม p
- การกำหนดค่า p ของที่อยู่ขององค์ประกอบแรกของอายุอาเรย์
- ความคิดเห็น ที่ C++ คอมไพเลอร์จะข้ามสิ่งนี้
- พิมพ์ข้อความบนคอนโซล
- สร้างจำนวนเต็ม x โดยใช้ a สำหรับการวนซ้ำ { เป็นเครื่องหมายจุดเริ่มต้นของส่วนเนื้อหาของ for a loop
- พิมพ์ค่าของ x รวมกับข้อความอื่นบนคอนโซล
- พิมพ์ค่าของ *(p + x) บนคอนโซล
- ส่วนท้ายของตัว for a loop
- พิมพ์ข้อความบนคอนโซล
- สร้างตัวแปร x โดยใช้ a for a loop { เป็นเครื่องหมายจุดเริ่มต้นของเนื้อความของ for loop
- พิมพ์ค่า x จาก 0 ถึง 4 ข้างข้อความอื่นๆ
- พิมพ์ค่าของ *(อายุ + x)
- ส่วนท้ายของ for loop
- ส่งกลับค่าหากโปรแกรมทำงานได้สำเร็จ
- ส่วนท้ายของฟังก์ชัน main()
การเข้าถึงค่าของ Array
องค์ประกอบของอาร์เรย์จะถูกเข้าถึงโดยใช้ดัชนีที่เกี่ยวข้อง ดัชนีขององค์ประกอบที่จะเข้าถึงจะถูกเพิ่มภายในวงเล็บเหลี่ยม [ ] ทันทีหลังชื่ออาร์เรย์ ตัวอย่างเช่น:
int john = age[2];
ในตัวอย่างข้างต้น เราเพียงระบุว่าอายุของ john ถูกเก็บไว้ที่ดัชนี 2 ของอาร์เรย์ชื่อ age ซึ่งหมายความว่าอายุของจอห์นคือ 3rd ค่าในยุคอาร์เรย์ นี่คือที่สมบูรณ์ C++ ตัวอย่างที่แสดงวิธีการเข้าถึงและพิมพ์ค่านี้:
#include<iostream> using namespace std; int main() { int age[5] = { 19, 18, 21, 20, 17 }; int john = age[2]; cout << "The age of John is:"<<john; }
Output:
นี่คือภาพหน้าจอของรหัส:
Code คำอธิบาย:
- รวมไฟล์ส่วนหัว iostream ไว้ในโค้ดของเรา มันจะช่วยให้เราอ่านและเขียนไปยังคอนโซลได้
- รวมเนมสเปซมาตรฐานเพื่อใช้คลาสและฟังก์ชันโดยไม่ต้องเรียกมัน
- การเรียกใช้ฟังก์ชัน main() ภายในโค้ดที่ควรเพิ่ม
- เริ่มต้นเนื้อความของฟังก์ชัน main()
- การประกาศอาร์เรย์ชื่อ age เพื่อจัดเก็บองค์ประกอบจำนวนเต็ม 5 รายการ
- การเข้าถึงค่าที่จัดเก็บไว้ในดัชนี 2 ของอายุอาร์เรย์และจัดเก็บค่าในตัวแปรชื่อ john
- การพิมพ์ค่าของตัวแปร john บนคอนโซลควบคู่ไปกับข้อความอื่น
ข้อดีของอาร์เรย์ใน C++
นี่คือข้อดี/ประโยชน์ของการใช้ Array C++:
- องค์ประกอบอาร์เรย์สามารถเคลื่อนที่ได้อย่างง่ายดาย
- ง่ายต่อการจัดการข้อมูลอาร์เรย์
- องค์ประกอบอาร์เรย์สามารถเข้าถึงได้แบบสุ่ม
- อาร์เรย์อำนวยความสะดวกในการเพิ่มประสิทธิภาพโค้ด ดังนั้นเราจึงสามารถทำงานได้มากโดยใช้โค้ดน้อยลง
- จัดเรียงข้อมูลอาร์เรย์ได้ง่าย
ข้อเสียของ Array in C++
- อาร์เรย์มีขนาดคงที่ ดังนั้นเราจึงไม่สามารถเพิ่มองค์ประกอบใหม่เข้าไปได้หลังจากการกำหนดค่าเริ่มต้น
- การจัดสรรหน่วยความจำมากกว่าข้อกำหนดจะทำให้พื้นที่หน่วยความจำสิ้นเปลือง และการจัดสรรหน่วยความจำน้อยลงอาจทำให้เกิดปัญหาได้
- ต้องทราบจำนวนองค์ประกอบที่จะจัดเก็บไว้ในอาร์เรย์ล่วงหน้า











