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

ข้อจำกัดของอาร์เรย์ (Array) ในภาษา C


อาร์เรย์เป็นโครงสร้างข้อมูลแบบหนึ่ง ที่จัดเก็บชุดข้อมูลลำดับต่อเนื่อง ขนาดคงที่ ของชนิดเดียวกัน

อาร์เรย์ใช้จัดเก็บชุดข้อมูล แต่บ่อยครั้งคิดว่าอาร์เรย์เป็นชุดตัวแปรชนิดเดียวกันที่จัดกลุ่มไว้ด้วยกัน

ข้อจำกัด (Limitations)

ข้อจำกัดของอาร์เรย์อธิบายด้านล่าง:

  • อาร์เรย์ที่สร้างขึ้นจะเป็นแบบจัตุรัส (Homogeneous) นั่นคือ ในอาร์เรย์จำนวนเต็ม จะเก็บได้แค่ค่าจำนวนเต็ม อาร์เรย์จำนวนจริงเก็บได้แค่ค่าจำนวนจริง และอาร์เรย์ตัวอักษรเก็บได้แค่ตัวอักษร ดังนั้น ไม่มีอาร์เรย์ใดที่เก็บค่าของสองชนิดข้อมูลได้

  • ขณะประกาศอาร์เรย์ การระบุขนาดอาร์เรย์เป็นข้อบังคับ และขนาดต้องเป็นค่าคงที่ ดังนั้น จะมี إما ขาดแคลน หรือ เสียดายหน่วยความจำ

  • ต้องมีการเลื่อน (Shifting) สำหรับการแทรกหรือลบองค์ประกอบในอาร์เรย์

  • อาร์เรย์ไม่ตรวจสอบขอบเขต (Bounds Checking): ในภาษา C ไม่สามารถตรวจสอบได้ ว่าค่าที่ป้อนในอาร์เรย์เกินขนาดของอาร์เรย์หรือไม่

  • ข้อมูลที่ป้อนด้วยดัชนี เกินขนาดอาร์เรย์ จะถูกวางนอกอาร์เรย์ โดยทั่วไปอยู่เหนือข้อมูลหรือโปรแกรมเอง

  • สิ่งนี้นำไปสู่ผลลัพธ์ที่คาดการณ์ไม่ได้ ยังไม่มีข้อความเตือนให้นักเขียนโปรแกรมรู้ว่าถูกขอบเขตอาร์เรย์ ในบางกรณี โปรแกรมอาจค้าง

ดังนั้น โปรแกรมต่อไปนี้อาจให้ผลลัพธ์ที่ไม่พึงประสงค์:

int a[10], i;
for(i = 0; i <= 20; i++)
    a[i] = i;

ตัวอย่าง

โปรแกรม C แสดงผลรวมของสองอาร์เรย์:

#include <stdio.h>

void main() {
    // ประกาศอาร์เรย์พร้อมกำหนดค่าเริ่มต้นตอนคอมไพล์ //
    int array1[5], array2[5], sum[5];
    
    // ประกาศตัวแปร //
    int i;
    
    // พิมพ์เอาต์พุทใช้ลูป for //
    printf("Enter the values of array1 :\n");
    for(i = 0; i < 5; i++) {
        printf("array1[%d] : \n", i);
        scanf("%d", &array1[i]);
    }
    
    printf("Enter the values of array2 :\n");
    for(i = 0; i < 5; i++) {
        printf("array2[%d] :\n", i);
        scanf("%d", &array2[i]);
    }
    
    printf("Elements in the sum of array1 and array2 are:\n");
    for(i = 0; i < 5; i++) {
        sum[i] = array1[i] + array2[i];
        printf("%d ", sum[i]);
    }
}

ผลลัพธ์

เมื่อรันโปรแกรม จะได้ผลลัพธ์ดังนี้:

Enter the values of array1:
array1[0] : 2
array1[1] : 3
array1[2] : 1
array1[3] : 2
array1[4] : 3

Enter the values of array2:
array2[0] : 4
array2[1] : 5
array2[2] : 3
array2[3] : 2
array2[4] : 1

Elements in the sum of array1 and array2 are:
6 8 4 4 4