c++基础入门自学笔记总结2---C++入门(中)
作用:将一段经常使用的代码封装起来,减少重复代码
函数的定义一般有5个步骤:
返回值类型 :一个函数可以返回一个值
函数名:给函数起个名称
参数列表:使用该函数时,传入的数据
函数体语句:花括号内的代码,函数内需要执行的语句
return表达式: 和返回值类型挂钩,函数执行完后,返回相应的数据
例:定义一个加法函数,实现两数相加
1.返回值类型 ==> int
2.函数名 ==> add
3.参数列表 ==> (int num1,int num2)
4.函数体语句 ==> int sum=num1+num2;
5.return表达式 ==> return sum;
语法:
返回值类型 函数名 (参数列表)
{
函数体语句
return 表达式
}
例:int add(num1,num2)
{
int sum=num1+num2;
return sum;
}
函数的常见样式
1.无参无返
2.有参无返
3.无参有返
4.有参有返
//当函数无返回值时数据类型可以用void代替,无类型不可以创建变量,因为无类型无法分配内存
例:
函数的调用
语法:
函数名(参数)
在main函数中调用函数
例:int c=add(a,b);
a,b为实际参数(调用函数时输入到括号内的值),简称实参
函数中的参数为形式参数(原函数括号内的参数列表),简称形参
当调用函数的时候,实参的值会传递给形参
例:调用相加函数
输出结果如下:
值传递
所谓值传递,就是函数调用时实参将数值传入给形参
值传递时,如果形参发生,并不会影响实参
理解上面这句话时可以用交换函数来运行。
输出结果如下:
可以发现在输入swap函数前,a=10,b=20
将数据输入函数后输出结果任然为a=10,b=20
实参的值并没有发生互换
可以简单画一个示意图来理解
在进行swap函数进行互换时其实只有函数内的形参,即num1,num2进行了互换,而实参a,b并没有发生值互换,即值传递时,形参是修饰不了实参的
函数的声明
作用:告诉编译器函数名称及如何调用函数。
函数的实际主体可以单独定义
一般定义一个函数时我们习惯把函数放在main函数的上面,但一旦我们将函数的定义放在main函数后面时程序就无法运行,如下:
那么是否函数定义就不能放在后面了呢?
当然不是,不过要实现这一目的就必须运用到函数的声明了。
如下:
这样就可以正常输出了。
即当前面有函数的声明时,函数可以写在main函数后面
而且函数的声明可以多次,但是函数的定义只能有一次
可以重复写函数的声明,任然可以输出正常结果
但是函数的定义只能有一次,否则便无法正常输出结果。
函数的分文件编写
作用:让代码结构更加清晰
步骤:
1.创建后缀名为.h的头文件
2.创建后缀名为.cpp的源文件
3.在头文件中写函数的声明
4.在源文件中写函数的定义
首先创建一个后缀名为.h的头文件,然后在头文件中写函数的声明
其次创建一个后缀名为.cpp的源文件,然后在源文件中写函数的定义
最后就可以在加入头文件后在main函数中直接引用相关函数
//不要忘记得添加对应的头文件才能引用函数
今天的函数总结就到这,明天我们再进行指针的总结。