C语言的数组问题

来源:6-1 数组初体验

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

写回答 关注

2回答

  • 越飞越高
    2016-10-24 19:09:16

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

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

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

  • echigh
    2016-05-07 16:56:57

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

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

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

C语言入门

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

926207 学习 · 20797 问题

查看课程

相似问题