猿问

请帮我理解一下这段代码

#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


涟漪前世泪
浏览 1767回答 6
6回答

zylnbhaw

我帮你改了一下代码#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");  }}这样就没问题了

习惯受伤

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

wldraa

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

qq_ChauncyHe_0

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

慕仔4414047

数组也是指针?

Sapce

定义的是一个二维数组 ,输出的是 一维数组使用的二维数组的名称,编译器通常情况下是会报错的。
随时随地看视频慕课网APP
我要回答