hehe_he_
DaiMaDaiMaDaiMaDaiMa
2020-02-29 14:10
采纳率: 100%
浏览 909

c语言将二维数组当做一维数组传入函数,并能输出原二维数组的各元素,怎样理解?

c语言将二维数组当做一维数组传入函数,并能输出原二维数组的各元素,怎样理解?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • caozhy
    已采纳

    二维数组是连续存放的,可以当作一维数组

    #include <stdio.h>
    
    void printarr(int * arr, int m, int n)
    {
        for (int i = 0; i < m; i++)
        {
            for (int j = 0; j < n; j++)
            {
                printf("%d ", arr[i * n + j]);
            }
            printf("\n");
        }
    }
    
    int main()
    {
        int arr[3][2] = { { 1, 2 }, { 3, 4 }, { 5, 6 } };
        printarr(&arr[0][0], 3, 2);
        return 0;
    }
    
    点赞 评论
  • qq_35926316
    qq_35926316 2020-02-29 15:52

    二维数组是逻辑意义上的二维,物理意义上的一维(并不严谨)。
    例如:int a[5][8];,那么你可以首先看作一个大的数组:a[5],那么里面的元素如何呢?每一个元素都是一个长度为8的数组。当然这是逻辑意义上的。物理意义上可以这么理解:
    |00000000|00000000|00000000|00000000|00000000|
    其中0是每一个int单元,每一个|00000000|代表了一个大的包含有8个int的单元。我也是小白,这个是我自己理解的,不太严谨。

    点赞 评论

相关推荐