变长二维数组有办法作为函数的参数吗?
变长二维数组有办法作为函数的参数吗?int arr;
han(arr); // arr作为参数
void han(int (*arr)[?]) // 定义是这个列要怎么办?
当做一维数组输入就好了,然后手动寻址! 你可以以指针的形式传递数组,同时把行列值当做参数传递进去啊
给你写两种方式,一种是传二维指针,一种是传一维指针
#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;
} sunrise085 发表于 2020-8-22 14:54
你可以以指针的形式传递数组,同时把行列值当做参数传递进去啊
给你写两种方式,一种是传二维指针,一种是 ...
谢谢大佬了 sunrise085 发表于 2020-8-22 14:54
你可以以指针的形式传递数组,同时把行列值当做参数传递进去啊
给你写两种方式,一种是传二维指针,一种是 ...
学习了,此帖回复,我收藏了
页:
[1]