C++初阶之函数与数组

思考时间 :假设使用一个数组记录一次聚餐中每个人吃了多少个甜饼,想求出此次家庭聚餐大家总共吃了多少个甜饼。
这个问题用到的是将数组元素累加,如果封装成函数,以后调用就会省事很多。
再封装函数时,要考虑函数接口所涉及的类型,因为最终需要返回的事消耗的甜饼总数,如果每个人消耗的甜饼均为整数,那么返回值为int类型。然后函数体需要对数组中的元素进行累加,所以需要将数组名传递给它,同时还需传递数组长度len。这里我们就需要将一个形参声明为数组名
int sum(int arr[],int len)
大家再来思考一下,此处的 arr 是数组还是地址????
此处的arr为一个指针!!!!!!!!!此处的int arr[]其实对应着int * arr在C++中当且仅当在函数头或者函数原型中int arr[]和int * arr才具有相同的意义在函数体中,不能使用int arr[]来声明指针。
在这里插入图片描述
实现代码如下:

#include<iostream>
using namespace std;
#include<string >
int sum(int arr[],int len)
{
	int sum=0;
	for(int i=0;i<len;i++)
	{
		sum+=arr[i];
	}
	return sum;
}
int main()
{
	int cookies[]={1,3,2,4,6,5,7,9,8};
	int len=sizeof (cookies )/sizeof (cookies [0]);
	cout<<"吃的甜饼总数为:"<<sum(cookies ,len)<<endl;
	system ("pause");
	return 0;
}

结果如下:
在这里插入图片描述
这里我们继续考虑一个问题:代码中sizeof (cookies)sizeof (arr)的长度分别是多少?
首先可以确定的是cookies和arr指向的是同一个地址。但是这里sizeof (cookies)是指整个整个数组的长度36,而sizeof (arr)只是指针变量的长度4。所以数组长度必须显示传递!!!!
我们可以验证一下:

#include<iostream>
using namespace std;
#include<string >
int sum(int arr[],int len)
{
	cout<<"sizeof (arr)的长度为:"<<sizeof (arr)<<endl;
	return 0;
}
int main()
{
	int cookies[]={1,3,2,4,6,5,7,9,8};
	int len=sizeof (cookies )/sizeof (cookies [0]);
	cout<<"sizeof (cookies )的长度为:"<<sizeof (cookies )<<endl;
	sum(cookies ,len);
	system ("pause");
	return 0;

}

运行结果如下:
在这里插入图片描述

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值