为了账号安全,请及时绑定邮箱和手机立即绑定

C语言的数组问题

#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

正在回答

2 回答

因为数组的下标均以0开始,所以arrThidr[1]代表第2个元素,输出2;

数组在初始化的时候,数组内元素的个数必须不能大于声明的数组长度,而第二种形式却恰恰相反,导致出现错误代码;

数组的下标均以0开始,arrThidr[3]代表第4个元素,超出范围,用0代替。

0 回复 有任何疑惑可以回复我~

arrFirst[1]指arrFirst数组的第二个数,{1,2,3}也就是划线的这个数;

arrSecond[2]是arrSecond数组的首地址+2的地址所在内存位置存储的数据,因为arrSecond定义的长度不对(比实际小),所以访问这个数据是内存中改位置已经保存的数值,这个结果是不确定的,跟着这个位置存储的数值变化而变化;

arrThird[3]这个数组项没有初始化,所以被默认赋为0。

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926020    人
  • 解答问题       20793    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

C语言的数组问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信