C语言指针基础知识点(五)--用数组名作函数参数

指针系列目录

  C语言指针基础知识点(一)–指针及指针变量
  C语言指针基础知识点(二)–指针变量的引用
  C语言指针基础知识点(三)–指针变量作为函数参数
  C语言指针基础知识点(四)–通过指针引用数组
  C语言指针基础知识点(五)–用数组名作函数参数
  C语言指针基础知识点(六)–通过指针引用多维数组
  C语言指针基础知识点(七)–通过指针引用字符串
  C语言指针基础知识点(八)–返回指针值的函数
  C语言指针基础知识点(九)–指针数组和多重指针
  C语言指针基础知识点(十)–动态内存分配与指向它的指针变量

用数组名做函数参数

数组元素作实参时,参数传递具有单向性,即实参的改变可以影响形参,而形参的改变无法影响实参。例:

假设已经定义了一个函数,其原型为:

void swap(int x, int y);

假设函数的作用是将两个形参(x, y)的值交换,今有以下的函数调用:

swap(int a[1], int a[2]);

但是,

当数组名作函数参数时,实参和形参的改变可以相互影响。因为实参数组名代表首元素的地址,而形参是用来接收从实参传递过来的数组首元素的地址的,因此形参是一个指针变量。

int main()
{
   
   
	void fun(int arr[], int n);  //对fun函数的声明
	int array[10];
    ......
	fun(array, 10);   // 用数组名作函数的参数
	return 0;
}

void fun(int arr[], int n)
{
   
   
       ......
}

下面,把变量名作为函数参数与把数组名作为函数参数相互比较,可以得到:

实参类型 变量名 数组名
要求形参的类型 变量名 数组名或指针变量
传递的信息 变量的值 实参数组首元素的地址
通过函数调用能否改变实参的值 不能

栗子1:

将数组 a 中 n 个整数按相反顺序存放

方法1:

# include<stdio.h>

int main()
{
   
   
	void inv(int x[], int n);
	int i, a[10];

	printf("Please enter 10 integer numbers:\n");
	for(i=0;i<10;i++)
		scanf("%d", &a[i]);

	inv
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值