解释 C 语言中未初始化数组访问的概念
问题
如果使用未初始化数组,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("
Array a:
");
for( i=0; i<4; i++ )
printf("arr[%d]: %d
",i,a[i]);
printf("
Array b:
");
for( i=0; i<4; i++)
printf("arr[%d]: %d
",i,b[i]);
printf("
Array c:
");
for( i=0; i<4; i++ )
printf("arr[%d]: %d
",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("
Array a:
");
for( i=0; i<4; i++ )
printf("arr[%d]: %d
",i,A[i]);
printf("
Array b:
");
for( i=0; i<4; i++)
printf("arr[%d]: %d
",i,B[i]);
printf("
Array c:
");
for( i=0; i<4; i++ )
printf("arr[%d]: %d
",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
广告
数据结构
网络
关系型数据库
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP