ปัญหา
ในภาษา C โปรแกรมจะดำเนินการไหม หากเราใช้อาร์เรย์ที่ไม่ได้กำหนดค่าเริ่มต้น
วิธีแก้ปัญหา
-
หากเราใช้อาร์เรย์ที่ยังไม่ได้กำหนดค่าใดๆ คอมไพเลอร์จะไม่สร้างการคอมไพล์และข้อผิดพลาดในการดำเนินการ
-
หากอาร์เรย์ไม่ได้กำหนดค่าเริ่มต้น คุณอาจได้รับผลลัพธ์ที่คาดเดาไม่ได้
-
ดังนั้น เราควรเริ่มต้นองค์ประกอบอาร์เรย์ด้วยค่าเริ่มต้นเสมอ
ตัวอย่างโปรแกรม
ต่อไปนี้เป็นโปรแกรม C ของการเข้าถึงอาร์เรย์ที่ไม่ได้กำหนดค่าเริ่มต้น -
#include <stdio.h>
int main(void){
int a[4];
int b[4] = {1};
int c[4] = {1,2,3,4};
int i; //for loop counter
//printing all alements of all arrays
printf("\nArray a:\n");
for( i=0; i<4; i++ )
printf("arr[%d]: %d\n",i,a[i]);
printf("\nArray b:\n");
for( i=0; i<4; i++)
printf("arr[%d]: %d\n",i,b[i]);
printf("\nArray c:\n");
for( i=0; i<4; i++ )
printf("arr[%d]: %d\n",i, c[i]);
return 0;
} ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
Array a: arr[0]: 4195872 arr[1]: 0 arr[2]: 4195408 arr[3]: 0 Array b: arr[0]: 1 arr[1]: 0 arr[2]: 0 arr[3]: 0 Array c: arr[0]: 1 arr[1]: 2 arr[2]: 3 arr[3]: 4
หมายเหตุ
หากเราไม่ได้เริ่มต้นอาร์เรย์ โดยค่าเริ่มต้น อาร์เรย์จะพิมพ์ค่าขยะและไม่แสดงข้อผิดพลาด
พิจารณาโปรแกรม C อื่นสำหรับการเข้าถึงอาร์เรย์ที่ยังไม่ได้กำหนดค่า -
ตัวอย่าง
#include <stdio.h>
int main(void){
int A[4];
int B[4] ;
int C[4] = {1,2};
int i; //for loop counter
//printing all alements of all arrays
printf("\nArray a:\n");
for( i=0; i<4; i++ )
printf("arr[%d]: %d\n",i,A[i]);
printf("\nArray b:\n");
for( i=0; i<4; i++)
printf("arr[%d]: %d\n",i,B[i]);
printf("\nArray c:\n");
for( i=0; i<4; i++ )
printf("arr[%d]: %d\n",i, C[i]);
return 0;
} ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
Array a: arr[0]: 4195856 arr[1]: 0 arr[2]: 4195408 arr[3]: 0 Array b: arr[0]: -915120393 arr[1]: 32767 arr[2]: 0 arr[3]: 0 Array c: arr[0]: 1 arr[1]: 2 arr[2]: 0 arr[3]: 0