巴巴鲁 发表于 2020-8-22 12:41:17

变长二维数组有办法作为函数的参数吗?

变长二维数组有办法作为函数的参数吗?

        int arr;
        han(arr); // arr作为参数


        void han(int (*arr)[?]) // 定义是这个列要怎么办?

Cool_Breeze 发表于 2020-8-22 12:56:34

当做一维数组输入就好了,然后手动寻址!

sunrise085 发表于 2020-8-22 14:54:58

你可以以指针的形式传递数组,同时把行列值当做参数传递进去啊
给你写两种方式,一种是传二维指针,一种是传一维指针
#include <stdio.h>
int fun(int**a,int r,int c)
{
    for(int i=0;i<r;i++)
    {
      for(int j=0;j<c;j++)
            printf("%d ",*((int*)a+i*c+j));
      printf("\n");
    }
    return 0;
};
int main()
{
    int a={0};
    int r=2,c=3;
    for(int i=0;i<r;i++)
      for(int j=0;j<c;j++)
            a=i*c+j;
    fun((int**)a,r,c);

    return 0;
}

#include <stdio.h>
int fun(int*a,int r,int c)
{
    for(int i=0;i<r;i++)
    {
      for(int j=0;j<c;j++)
            printf("%d ",*(a+i*c+j));
      printf("\n");
    }
    return 0;
};
int main()
{
    int a;
    int r=2,c=3;
    for(int i=0;i<r;i++)
      for(int j=0;j<c;j++)
            a=i*c+j;
    fun((int*)a,r,c);

    return 0;
}

巴巴鲁 发表于 2020-8-22 18:15:31

sunrise085 发表于 2020-8-22 14:54
你可以以指针的形式传递数组,同时把行列值当做参数传递进去啊
给你写两种方式,一种是传二维指针,一种是 ...

谢谢大佬了

风过无痕1989 发表于 2020-8-23 00:23:11

sunrise085 发表于 2020-8-22 14:54
你可以以指针的形式传递数组,同时把行列值当做参数传递进去啊
给你写两种方式,一种是传二维指针,一种是 ...

学习了,此帖回复,我收藏了
页: [1]
查看完整版本: 变长二维数组有办法作为函数的参数吗?