C语言传递数组给函数的方式

1.传递一维数组 int a[10] 给函数,会隐式转换成指向数组首元素的指针,实质上传递的是指向数组首元素的指针(存放的值是数组首元素的地址,指向的数据是数组首元素)。

在使用a值时,可以把a看成是一个指向首元素的指针。但是如果取a的地址,一定要把a看成是一个数组整体。
&a是指向数组的指针。(其实数组变量a代表的是一个数组,但它的值是数组首元素的地址,有別于一般的变量)

//打印一维数组a[n]
void PrintLinearArray(int a[], const int n) 
{
	for(int i=0; i<n; ++i)
	{
		cout<<a[i]<<" ";
	}
	cout<<endl;
}
//打印一维数组p[n]
void PrintLinearArray(int* p, const int n) 
{
	for(int i=0; i<n; ++i)
	{
		cout<<p[i]<<" ";
	}
	cout<<endl;
}


2.传递二维数组 int a[10][8],会隐式转换成指向数组a[0]的指针,a[0]可以看成是一个一维数组,由8个int元素组成。
实质上传递的是指向a[0]的指针(存放的值是a[0]的地址,指向的数据是a[0]。注意a[0]是一个一维数组,且a[0]的值是a[0][0]的地址)(这些是站在语法规则角度上说的)

方式一:形参给出第二维的长度

//打印二维数组a[n][8]
void PrintTwoDimensionalArray(int a[][8], const int n) 
{
	for(int i=0; i<n; ++i)
	{
		for(int j=0; j<8; ++j)
		{
			cout<<a[i][j]<<" ";
		}
		cout<<endl;
	}
} 

方式二:形参声明为指向数组的指针

//打印二维数组a[n][8]
void PrintTwoDimensionalArray(int (*a)[8], const int n) 
{
	for(int i=0; i<n; ++i)
	{
		for(int j=0; j<8; ++j)
		{
			cout<<a[i][j]<<" ";
		}
		cout<<endl;
	}
} 

方式三:形参声明为指针,二维数组在底层实质上是一块连续的内存,每一小块存放的是整数数据

//打印二维数组a[low][column]
void PrintTwoDimensionalArray(int* pElem, const int low, const int column)  
{
	for(int i=0; i<low; ++i)
	{
		for(int j=0; j<column; ++j)
		{
			cout<<pElem[i*column+j]<<" ";
		}
		cout<<endl;
	}
}



 


 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值