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语言入门
926207 学习 · 20797 问题
相似问题