如何把结构体数组作为实参传递给函数?
发布网友
发布时间:2022-04-20 01:19
我来回答
共4个回答
热心网友
时间:2023-06-27 06:48
数组作为参数是按地址传递的
数组名就是数组的首地址。因此在数组名作函数参数时所进行的传送只是地址的传送, 也就是说把实参数组的首地址赋予形参数组名。形参数组名取得该首地址之后,也就等于有了实在的数组。实际上是形参数组和实参数组为同一数组,共同拥有一段内存空间。
热心网友
时间:2023-06-27 06:48
函数里写明数组类型,数组名再加中括号就行了,但同时最好写上数组里的元素个数;要么直接用指针(你没学就不说了)!
如 int fun(int a[],int n); //声明一个函数,传入一个a数组,n代表行标
调用 fun(a,n)就行了;
怎样??懂了吧!!
热心网友
时间:2023-06-27 06:49
很简单的,数组作为函数参数传递的时候只要是数组名就可以了,因为数组名本身就是数组的首地址 .给个程序看看
#include<stdio.h>
#define N 3
int array[N][N];
void main()
{
//在主函数内声明被调函数
void convert(int array[][3]);
int i,j;
printf("输入数组:\n");
for(j=0;j<N;j++)
for(i=0;i<N;i++)
scanf("%d",&array[i][j]);
printf("\n");
for(j=0;j<N;j++)
{
for(i=0;i<N;i++)
printf("%d\t",array[i][j]);
printf("\n");
}
//调用矩阵转置函数
convert(array);
printf("\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%d\t",array[i][j]);
printf("\n");
}
}
void convert(int array[][3])
{
int i,j,t;
for(i=0;i<N;i++)
for(j=0;j<N;j++)//设置数组中转置矩阵元素交换
{
t=array[i][j];
array[i][j]=array[j][i];
array[j][i]=t;
}
}
热心网友
时间:2023-06-27 06:50
取数组首地址做地址传递,如要传送int a[10],可以在函数中写,fun(int *a)