学了数组,我有一个很难的问题想问

来源:6-9 多维数组

回味灬那过去的一切

2018-10-05 20:53

#include <stdio.h>

int main()

{

   ; //使用第一种方式初始化方式声明并初始化二维数组arr1

    int arr2[2][2];

    arr2[0][0]=1;

    arr2[0][1]=2;

    arr2[1][0]=3;

    arr2[1][1]=4;

    //使用第二种方式初始化方式声明并初始化二维数组arr2

    printf("%d,%d",arr1,arr2);


}

输出结果我试过了,是两个个数字6356736,6356720 。

我想知道为什么会输出这两个数字???

我改变了下名字,数字没变。只改变arr1的值,输出也没变,。然后改变arr1的内存大小int arr1[2][1]={{1},{3}},输出就变了,而且两个数字都变了。

这是为啥?求大佬解释。


写回答 关注

2回答

  • qq_慕后端00293
    2018-11-27 16:49:57

    你这样扎别人心,哈哈哈

  • 阴谋轮
    2018-10-06 11:36:16

    首先不是我打击你,你写成这样,报错了没检查吗?

    你的return 0;呢? 

    你定义arr1了你就输出? 

    输出数组不用for循环直接printf?

    主函数第一行;分号是什么鬼?

    你给这个代码问问题吗?

    你输出的是地址,是你电脑内存的地址,。

    如果你是问这个题,我会。你要是问地址,我也说不清。

    #include <stdio.h>
    int main()
    {
        //使用第一种方式初始化方式声明并初始化二维数组arr1
        int arr1[2][2]={{10,20},{30,40}};
        //使用第二种方式初始化方式声明并初始化二维数组arr2
        int arr2[2][2];
        arr2[0][0]=10;arr2[0][1]=20;
        arr2[1][0]=30;arr2[1][1]=40;
       
        int i,j;
        for(i=0;i<2;i++)
        {
            for(j=0;j<2;j++)
            {
                printf("%d ",arr1[i][j]);
                if(j==1)
                {
                    printf("\n");
                }
            }
        }
        for(i=0;i<2;i++)
        {
            for(j=0;j<2;j++)
            {
                printf("%d ",arr2[i][j]);
                if(j==1)
                {
                    printf("\n");
                }
            }
        }
       
       
        return 0;   
    }

C语言入门

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

926024 学习 · 20793 问题

查看课程

相似问题