C语言第七章 函数

数组作为函数参数

#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */
//int whitchmax(int a,int b);
//形参的数组大小无所谓 不重要 只是将实参的首地址传给了形参 反正会把下标传过来的 形参数组的大小其实无所谓了 
void changevalue(int ba[1]){ //ba[0]~ba[4]
	ba[3] = 27;
	ba[4] = 45; 
	return; 
} 
int main(int argc, char *argv[]) {
	
	//数组作为函数参数:
	//数组元素作为函数参数
//	int a[10];//相当于定义了10个变量 a[0] ~ a[9] 那么数组元素大家就可以当成变量使用 
//	a[1] = 5; //数组元素 当整形变量一样使用 
//	a[4] = 7; 
//	int max = whitchmax(a[1],a[4]); 
//	printf("%d\n",max); 
	//数组名作为函数参数
	//实参 形参个数要相等 类型要一致 一一传递 
	//C语言规定 实参变量对形参变量的数据传递时'值传递'也就是单项传递 只由实参传递给形参
	//数组名也可以作为函数实参 数组名代表的是数组的首地址 将数组名作为函数的实参传递时 传递的是数组的首地址 
	//此时 形参也应该用数组名(也可以是数组指针);
	
	//强调:数组名作为函数参数时 不是值传递了 不是单项传递了 而是把实参数组的 开始地址传递给了形参数组
	//这样两个数组就会就会共同占用一段内存 这其实叫地址传递 也就是说形参数组中 各个元素的值如果法发生了变化
	//会导致实参元素的值也会发生变化 这一点 是与变量函数参数明显不同
	
	int b[5];
	b[0] = 85; 
	b[1] = 70; 
	b[2] = 98; 
	b[3] = 92;
	b[4] = 78;
	
	changevalue(b);
	
	int i;
	for(i=0;i<5;i++){
		printf("b[%d] = %d\n",i,b[i]); 
	}

	//1:如果实参为数组名 形参也得为数组名 
	//2:形参数组和实参数组类型要一致 比如都是int型
	//3:形参大小可以不指定,即便是指定了也可以与实参数组大小不一致
	//因为C编译器对形参数组大小不做检查 
	//只是将实参素数组的首地址传递给形参数组
	
	//多维数组名作为函数参数
	//可以用多维数组名作为形参和实参 可以指定每一维的大小 也可以忽略第一维的大小 但不能省略第二维的大小
	//形参尽量跟实参一样 (也是这些行 这些列) 这样实参能引用的下标形参就可以 就会保证你不出错
	//传递地址的概念很重要 这么一个概念理解数组作为函数实参 就很简单
	//演示
	int c[5][8]; //一维是0-4 二维0-7
	c[0][2] = 12; 
}
//int whitchmax(int a,int b){
//	if(a>b){
//		return a; 
//	}else{
//		return b; 
//	}
//} 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值