‘壹’ 关于c语言的二维数组作为函数参数的问题
所谓二维数组,实际上是指向数组的指针,比如:
int n=2,m=3;
int arr[n][m];
实际上相当于:
int n=2,m=3;
int (*arr)[m];
所以,传递二维数组作为参数,实际上就是传递了一个指针。
将形参的类型定义成int*,再在函数内部转换回指向数组的指针就行了,比如:
void f(int *p,int row,int column)
{
int (*arr)[column]=(int (*)[column])p;
//使用二维数组arr
}
这样传递参数:
int n=5,m=6;
int arr[n][m];
f((int*)arr,n,m);
下面是一个例子:
#include <stdio.h>
void f(int *p,int row,int column)
{
int (*arr)[column]=(int (*)[column])p;
for(int i=0;i<row;i++)
{
for(int j=0;j<column-1;j++)
printf("%d,",arr[i][j]);
printf("%d ",arr[i][column-1]);
}
}
int main()
{
int n;
scanf("%d",&n);
int arr[n][n];
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
arr[i][j]=i*n+j;
}
f((int*)arr,n,n);
return 0;
}
这是运行截图:
‘贰’ C语言中如何将二维数组作为函数的参数传递
函数原型 type fun (type (name*)[size])
type是你要定义的类型,fun是函数名,name是在函数中二维数组的名字,
size是二维数组第2维的长度。
这样调用这个函数只需要把二维数组函数名传递就可以了。
‘叁’ “c语言”和“c++语言”如何用二维数组做形参
二维数组做形参?C++的数组用形参的时候非常之弱,你确定你需要它?
N维数组做形参必须指定后n-1维的大小,不然编译器无法知道如何使用它,
如
void func(int a[][10]) 或 void func2(int b[][10][10])
虽然写是可以这样子写,不过,其实上面那种代码等价于
void func(int (*a)[10]) 和 void func2(int (*b)[10][10])
‘肆’ c语言c++语言如何用二维数组做形参
C/C++中,二维数组的第一维的每一个元素都是一维数组。所以,用指向一维数组的指针或用第一维维数空缺的二维数组作为函数的形式参数都能达到目的。设处理数组为int型,举例代码如下:
//#include"stdafx.h"//Ifthevc++6.0,withthisline.
#include"stdio.h"
voidmyprint(int(*p)[5]){//p是指向有5个int型元素的一维数组的指针
//voidmyprint(intp[][5]){//这样写效果是一样的
inti,j;
for(i=0;i<3;i++){
for(j=0;j<5;printf("%3d",p[i][j++]));
printf(" ");
}
}
intmain(void){
inta[3][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15}};
myprint(a);
return0;
}
‘伍’ c语言如何定义二维数组
二维数组定义的一般形式是:
dataType arrayName[length1][length2];
其中,dataType 为数据类型,arrayName 为数组名,length1 为第一维下标的长度,length2 为第二维下标的长度。
例如:
int a[3][4];
定义了一个 3 行 4 列的二维数组,共有 3×4=12 个元素,数组名为 a,即:
a[0][0], a[0][1], a[0][2], a[0][3]
a[1][0], a[1][1], a[1][2], a[1][3]
a[2][0], a[2][1], a[2][2], a[2][3]
‘陆’ c语言二维数组做参数形参该怎么写,举个例子
例如下面这个
int fun(int a[2][3],int n);
或者
int fun(int a[][3],int n);
要指出列数是多少,行数写不写都一样,行数要通过n进行传递。
假设
int b[2][3]={};
则调用的时候可以写
fun(b,2);
‘柒’ C语言中如何将二维数组作为函数的参数传递
在c语言中可以用二维数组作为实参或者形参。
1、函数中用二维数组作为形参,函数声明中可以指定所有维数的大小,也可以省略第1维的维数如:
void f(int array[3][10]); //正确
void f(int array[][10]); //正确上面的两种二维数组形参表示都是正确的。
2、函数中用二维数组作为形参,不能把第2维或者更高维的大小省略,如下面的定义是不合法的:
void f(int array[][]); //错误
因为从实参传递来的是数组的起始地址,在内存中按数组排列规则存放(按行存放),而并不区分行和列,如果在形参中不说明列数,则系统无法决定应为多少行多少列,不能只指定一维而不指定第二维,下面写法是错误的:
void f(int array[3][]); //错误 3、二维数组作为实参传递时,必须保证实参第2维的维数与形参第2维的维数相同,因为必须要保证形参和实参的数据类型一致。比如定义如下函数:
void f(int array[][10]);可以将如下数组传递给函数f。
int a[2][10] = {1,2,3,4};
int b[4][10] = {1};
‘捌’ C语言怎么以二维数组作为参数传递的问题
考虑要把a作为参数传入到print中,那么print函数就要定义一个接收二维数组的参数,那么什么参数能接收二维数组呢。
就是print(int (*newbuf)[3])
然后newbuf的地址就是a的地址,然后newbuf[i][j]来访问每一个元素了
有问题继续问哈,写的可能不太明白
‘玖’ c语言中怎么用二维数组作为函数参数
二维数组作为函数参数,实参可以直接使用二维数组名,在被调用函数中对形参数组定义可以指定所有维数的大小,也可以省略第一维的大小说明,如:
因为从实参传递来的是数组的起始地址,如果在形参中不说明列数,编译器将无法定位元素的的位置。