Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

คำถามฝึกหัดเกี่ยวกับ Arrays ใน C++


อาร์เรย์ (Array) เป็นโครงสร้างข้อมูลที่เก็บข้อมูลในหน่วยความจำที่ติดกัน (contagious memory location)

การประกาศอาร์เรย์ (Declaring arrays)

การประกาศอาร์เรย์ทำโดยไวยากรณ์ดังนี้ :
int 1D[] - สำหรับ 1-D array
int 2D[][] - สำหรับ 2-D array

ถ้าคุณ initialize อาร์เรย์ด้วยจำนวนองค์ประกอบน้อยกว่า ที่เหลือจะถูก initialize ด้วย 0

ที่อยู่หน่วยความจำขององค์ประกอบของอาร์เรย์

1-D array : address[i] = baseAddress + i*size
2-D array (row major) : address[i][j] = baseAddress + (i*n + j) * size

ตอนนี้ มาดูโจทย์ฝึกหัดบ้าง

ทายผลลัพธ์ของโค้ดต่อไปนี้

int arr[5] = {6, 9};
for(int i = 0; i<5; i++)
    cout<<arr[i]<<" ";

ผลลัพธ์

6 9 0 0 0

อาร์เรย์ถูก initialize ด้วยสองค่า และค่าที่เหลือถูก initialize เป็น 0 ซึ่งสะท้อนในผลลัพธ์

int arr[][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
cout<<arr[1][2];

ผลลัพธ์

6

หาที่อยู่ขององค์ประกอบที่กำหนดของอาร์เรย์จำนวนเต็ม ถ้าที่อยู่ฐานคือ 1420

1D array : arr[43] address = 1420 + 43*2 = 1506
2D array of size arr[10][10] : arr[5][4], stored as row major
address = 1420 + (5*10 + 4)*2 = 1420 + (54)*2 = 1528.