当前位置:首页 » 编程语言 » c语言二维数组如何传参数
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言二维数组如何传参数

发布时间: 2022-07-29 23:49:56

❶ 关于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语言二维数组传值

多维数组传递,n要为固定大小,void p( arr[][5] );
int arr[2][5];

p(arr);

来自下面网址

网页链接

❸ C语言怎么以二维数组作为参数传递的问题

考虑要把a作为参数传入到print中,那么print函数就要定义一个接收二维数组的参数,那么什么参数能接收二维数组呢。
就是print(int (*newbuf)[3])
然后newbuf的地址就是a的地址,然后newbuf[i][j]来访问每一个元素了

有问题继续问哈,写的可能不太明白

❹ 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语言中如何将二维数组作为函数的参数传递

函数原型 type fun (type (name*)[size])

type是你要定义的类型,fun是函数名,name是在函数中二维数组的名字,
size是二维数组第2维的长度。
这样调用这个函数只需要把二维数组函数名传递就可以了。

❻ C语言 二维数组传递参数

二维数组传递给函数的时候,有两种方式,一种是a[][6],一种是(*a)[6],这里的6是不能省略的,不然编译器不知道如何通过加多少来偏移这个指向数组的指针。

❼ 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语言问题,请问二维数组的函数参数是怎么传递的

数组为参数时会退化为一个二级指针传递,如图,可以将函数头部写成
void shuchu(int **array_num);
在函数中调用时,直接传递数组名就可以了,数组名可以视为数组的“头指针”,可以用这个指针进行一系列的相关操作,如图,可以按如下方式调用
shuchu(a);

另外,一个建议:不要在传参时忽略数组的长度,最好显式的以参数的形式传递给函数
或者,在数组中做标志,在函数中使用时可以根据标志自行分出维度

满意请采纳,不满意请追问

❾ C语言中 指针做函数参数传递二维数组

#include <stdio.h>

void fun(int (*p1)[3],int (*p2)[3]);

int main()

{

int p1[3][3]={{7,8,9},{4,5,6},{1,2,3}} ;

int p2[3][3] = {0};

int i = 0, j = 0;

fun(p1,p2);

for(i = 0;i < 3;i++){

for(j = 0;j < 3;j++){

printf("%d ",*(*(p2+i)+j));

}

printf(" ");

}

return 0;

}

void fun(int (*p1)[3],int (*p2)[3])

{

int i = 0,j = 0;

for(i = 0;i < 3;i++){

for(j = 0;j < 3;j++){

*(p2[j]+i) = *(p1[i]+j);

}

}

}

(9)c语言二维数组如何传参数扩展阅读:

函数指针的声明方法为:

返回值类型 ( *指针变量名) ([形参列表]);

其中,“返回值类型”说明函数的返回类型,“(指针变量名 )”中的括号不能省,括号改变了运算符的优先级。若省略整体则成为一个函数说明,说明了一个返回的数据类型是指针的函数,后面的“形参列表”表示指针变量指向的函数所带的参数列表。例如:

int func(int x); /* 声明一个函数 */

int (*f) (int x); /* 声明一个函数指针 */

f=func; /* 将func函数的首地址赋给指针f */

或者使用下面的方法将函数地址赋给函数指针:

f = &func;

赋值时函数func不带括号,也不带参数,由于func代表函数的首地址,因此经过赋值以后,指针f就指向函数func(x)的代码的首地址。

网络-函数指针

❿ 二维数组如何当参数传递

在形参是数组的情况下,只要是数组,无论维数,实际上在调用函数时,传给函数的将是一个数组的首地址,以及维数等相关信息
也就是说,在函数执行过程中,并不会新开辟内存空间,而是形参实参共用同一段内存空间
所以,在这种情况下,函数内部对数组进行修改,其值会返回给实参
你的例子中调用部分有问题,不能这样
shuru(a[10][2])
而是
shuru(a)
因为a[10][2]代表数组a中的一个元素,而且是越界的
而a才是数组名