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

请帮我理解一下这段代码

请帮我理解一下这段代码

C
涟漪前世泪 2018-03-18 11:01:59
#include<stdio.h> int main() { int a[3][4] = {{1, 2, 3, 4},   {5, 6, 7, 8},   {9, 10, 1, 12}}; printf("%d\n",a[3]); } 为什么输出的是2948644
查看完整描述

6 回答

已采纳
?
zylnbhaw

TA贡献1条经验 获得超0个赞

我帮你改了一下代码#include<stdio.h>
int main()
{
    int a[3][4] = {{1, 2, 3, 4},
                  {5, 6, 7, 8},
                  {9, 10, 1, 12}};
    
     for(int i=0;i<3;i++)
     {
      for(int j=0;j<4;j++)
       {
        printf("%d ",a[i][j]);
    }
         printf("\n");
  }
}

这样就没问题了

查看完整回答
反对 回复 2018-03-18
?
习惯受伤

TA贡献885条经验 获得超1144个赞

数组下标越界,这里输出的是一个随机值

查看完整回答
2 反对 回复 2018-03-18
?
wldraa

TA贡献33条经验 获得超17个赞

a[3] 的类型实际上是 int* ,是一个指针类型,而d% 要求输出整型,所以这里输出的实际是他的地址。所以多次执行结果会不同,像随机数一样

查看完整回答
1 反对 回复 2018-03-18
?
qq_ChauncyHe_0

TA贡献2条经验 获得超1个赞

数组下标越界,编译器不会检查出错误,就会给它一个随机数,你就这样理解吧


查看完整回答
1 反对 回复 2018-03-18
?
慕仔4414047

TA贡献1条经验 获得超0个赞

数组也是指针?

查看完整回答
反对 回复 2018-04-04
?
Sapce

TA贡献6条经验 获得超3个赞

定义的是一个二维数组 ,输出的是 一维数组使用的二维数组的名称,编译器通常情况下是会报错的。

查看完整回答
反对 回复 2018-03-18
  • 6 回答
  • 0 关注
  • 1766 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信