程序执行结果分析题。

按行优先的方式把一个二维数组的元素存入一个一维数组中,并输出

int arr2【3】【2】
int arr2length=sizeof(arr2) 获取二维数组长度
int arr1length=sizeof(arr2[0]) 获取二维数组长度中的一维数组长度
int length=arr2length * arr1length 计算总长度
int arr[length]

for(int i=0;i<arr2length;i++){
for(int j=0;j<arr1length;j++){
arr[i]=arr2[i][j] 赋值给一维数组
}
}

简单说一下
通过双重for循环遍历二维数组(注意按行遍历,外层循环是行,内层是列),然后在循环中将二维数组的值赋给一维数组。

img

#include<stdio.h>
void fun(int a[][4], int* b);
int main()
{
    int c[20] = { 0 }, f[3][4] = { 1,4,7,10,2,5,8,11,3,6,9,12 },*t=c;
    fun(f, c);
    while (*t)
    {
        printf("%d ", *t);
        t++;
    }
}
void fun(int a[][4], int* b)
{
    for (int i = 0;i < 4;i++)
    {
        for (int j = 0;j < 3;j++)
        {
            *b = a[j][i];
            b++;
        }
    }
}