allenbin
2016-05-06 15:13
#include <stdio.h>
int main()
{
//第一种形式
int arrFirst[3] = {1,2,3};
//第二种形式
int arrSecond[1] = {1,2,3};
//第三种形式
int arrThird[3];
//给arrThird数组每个元素初始化
arrThird[0]=1;
arrThird[1]=2;
arrThird[2]=3;
//输出第一个数组中的第二个元素
printf("%d\n",arrFirst[1]);
//输出第二个数组中的第二个元素
printf("%d\n",arrSecond[2]);
//输出第三个数组中的第二个元素
printf("%d\n", arrThird[3]);
return 0;
}
输出的结果为什么会是
2
4195392
0
因为数组的下标均以0开始,所以arrThidr[1]代表第2个元素,输出2;
数组在初始化的时候,数组内元素的个数必须不能大于声明的数组长度,而第二种形式却恰恰相反,导致出现错误代码;
数组的下标均以0开始,arrThidr[3]代表第4个元素,超出范围,用0代替。
arrFirst[1]指arrFirst数组的第二个数,{1,2,3}也就是划线的这个数;
arrSecond[2]是arrSecond数组的首地址+2的地址所在内存位置存储的数据,因为arrSecond定义的长度不对(比实际小),所以访问这个数据是内存中改位置已经保存的数值,这个结果是不确定的,跟着这个位置存储的数值变化而变化;
arrThird[3]这个数组项没有初始化,所以被默认赋为0。
C语言入门
928206 学习 · 21545 问题
相似问题