【C语言】二维数组作为函数参数传递

2023-12-16 11:02:07

二维数组只能作为函数实参传递

方法一

int in(int a[][j]);
in(a);
#include<stdio.h>
#define i 3
#define j 3


//输入二维数组信息
int in(int a[][j])
{
	printf("请输入二维数组信息:\n");
	for(int p=0;p<i;p++)
		for(int q=0;q<j;q++)
		{
			scanf("%d",&a[p][q]);
		}
	return 0;
}


//输出修改后二维数组信息
int out(int a[][j])
{
	a[0][0] = 100;
	printf("修改后二维数组信息:\n");
	for(int p=0;p<i;p++)
	{
		for(int q=0;q<j;q++)
		{
			printf("%d ",a[p][q]);
		}
		printf("\n");
	}
		
	return 0;
}

int main()
{
	int a[i][j];
	in(a);
	out(a);
}

?

?

方法二?

二维数组的存储是线性存储,可以用数组第一个数的地址作为参数传递,进而推出数组中的其它数。

int in(int *a);
in(&a[0][0]);
#include<stdio.h>
#define i 3
#define j 3


//输入二维数组信息
int in(int *a)
{
	printf("请输入二维数组信息:\n");
	for(int p=0;p<i;p++)
		for(int q=0;q<j;q++)
		{
			scanf("%d",a+p*j+q);
		}
	return 0;
}

//输出修改后二维数组信息
int out(int *a)
{
	*(a) = 100;
	printf("修改后二维数组信息:\n");
	for(int p=0;p<i;p++)
	{
		for(int q=0;q<j;q++)
		{
			printf("%d ",*(a+p*j+q));
		}
		printf("\n");
	}
		
	return 0;
}

int main()
{
	int a[i][j];
	in(&a[0][0]);
	out(&a[0][0]);
}

?

文章来源:https://blog.csdn.net/qq_63806300/article/details/126939788
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。