C++笔记之函数

使用C++函数时需要提供的内容:
1)函数的定义
2)函数原型
3)函数调用

一、函数基本知识

1、函数的定义
函数的定义分为有返回值和无返回值两种,无返回值函数称为void函数,格式:

void functionName(parameterList)
{
   
	statement(s);
	return;  //可选
}

有返回值:

typeName functionName(parameterList)
{
   
	statement(s);
	return value;  //必须
}

返回值可以是常量、变量、表达式,其返回的类型必须是typeName类型或者可以转换为typeName的类型。返回值可以是除数组外任何类型(整型、浮点型、指针、结构、对象),C++虽不允许直接返回数组,但允许数组作为结构或对象的一部分来返回。
2、函数原型
作用:告诉编译器函数返回类型、参数类型和数量。
原型是一条语句以分号结束,原型中不必提供变量名,只需有类型列表即可(意味着原型中的变量名不必与定义中的名字相同,但类型需要一致)。

#include <iostream>

int sum(int,int); // #1
int main()
{
   
    using namespace std ;
    int a ,b;
    cin >>a >> b ;
    a = sum(a,b); // #2
    cout << a ;
    return 0 ;

}
/************#3***********/
int sum(int c,int e)
{
   
    int sum1;
    sum1 = c + e ;
    return sum1 ;
}

如上述代码中,#1为函数原型,#2为函数调用,#3为函数定义。

二、函数参数传递

1、按值传递
顾名思义,就是在函数调用的时候将数值传递给函数,在此过程中以上述sum函数为例,在#2处调用时,程序将main函数中的变量a ,b 的数值传递给sum参数列表中的变量c,e,相当于将变量a,b的值复制一份给c,e,所以变量a,b的称为实参,而变量c,e称为形参
在函数内部声明的变量称为局部变量(包括函数的参数),在函数退出的时候局部变量所占用的内存会自动释放。
2、将数组传递给函数

#include <iostream>

int sum(int arr[],int); // #1
int main()
{
   
    using namespace std ;
    int arr1[5] = {
   21, 25, 56, 14,19};
    int a ;
    a = sum(arr1,5); // #2
    cout << a ;
    return 0 ;

}
/************#3***********/
int sum(int arr[],int b)
{
   
    int arr_sum = 0;
    for (int i = 0 ;i < b ; i++ )
    {
   
        arr_sum += arr[i];
    }
    return arr_sum;
}

以上代码为例,在sum函数中第一个参数 int arr[ ] ,并不表示一个数组(所以也不会将实参复制一份),而是一个指针等价于 int * arr(两者只在函数头或函数原型中等价,在其他地方两者的含义并不相同) ,但在函数中使用时可以将其视为数组使用,如上sum函数一样。
同时在调用sum函数时,传递给函数的是数组名,数组名表示数组中第一个元素的地址,对数组名使用sizeof可以得到数组的长度(以字节为单位),所以实质上main函数中传递给sum函数的第一个参数是arr数组的地址给sum函数,同时意味着sum函数可以修改main中定义的arr数组(原始数组),若不想让函数修改原始数组可以在函数原型和定义的地方加上const如:int sum (const int arr[], int b ),这意味着arr是常量不能通过arr去修改数组内部的值,但原始数组可以不是常量。
3、指针与const
指针与const的组合有两种不同的方式
1)、是让指针指向一个常量对象,以防止通过指针去修改所指向的值,但可以改变指针所指向的位置
2)、是让指针本身成为一个常量,以防止改变指针所指向的位置,但可以通过指针去修改所指向的值

//#1
int a = 12;
const int * p1 = &a ;
//#2
int * const p2 = &a ;

上述中#1是第1种情况,让指针指向一个常量对象,不能通过指针去修改a所在位置的值,但可以通过变量a去修改其值
#2是第2种情况:让指针本身成为一个常量,p2只能指向a所在的位置,不能指向其他位置。
同时C++禁止将const的地址赋给非const指针,所以下述情形是不允许的:

cons int b = 23 ;
int *p = &b ; //不允许

4、在函数中使用二维数组
如下示例所示:

int arr1[2][3] = {
   {
   1,2,3},{
   23,25,15},{
   35,89,45}};
int sum(int arr[][3],int size )
{
   
	int total = 0;
	for(int i = 0; i < size ; i ++ )
	{
   
		for(int j = 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值