引用传递

#include<stdio.h>

double getAvg(int* arr,int size);//函数声明
double getAvg2(int* arr,int size);

int main() {

int balance[5] = {1000,2,3,14,50};//带5个元素的整型数组
double avg;

avg = getAvg(balance,5);//传递一个指向数组的指针作为参数
printf("\n%f",avg);//输出返回值
getchar();
}

double getAvg(int* arr,int size){//arr 是一个指针

int i,sum = 0;
double avg;

for(i=0;i<size;i++){
	sum += arr[i];//sum = sum + arr[i] 
	printf("\narr 存放的地址=%p",&arr[i]);//这里arr 没有改变是因为 是调用数组元素,而不是改变arr指向的元素
	/*这里arr存放的一直是整型数组首个元素的地址,没有发生改变*/	

}
avg = (double)sum / size;
return avg;
}

double getAvg2(int* arr,int size){

int i,sum = 0;
double avg;

for(i=0;i<size;i++){
	sum += *arr;//*arr 指 指针指向地址的内容
	printf("\narr 存放的地址=%p",arr);
	arr++;//arr = arr + 1 指针自增 改变了存放内容
	/*arr++是指针的自增,这里自增会改变arr 指向地址。
	原因 : arr 将原本指向的arr数组元素 + 了四个字节,然后指向的是后一个数组元素。然后因为指针内容发生改变,所以arr 指向地址发生变化。*/

}
avg = (double)sum / size;
return avg;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值