一、main函数:
主函数,也叫做入口函数,有且仅有一个
#include <iostream>
int main()
{
cout << "xingnian" << endl;
//将"xingnian"输出到屏幕
}
二、自定义函数
1、函数的定义
//自定义一个Add函数,实现传入两数,相加后返回。
//int表示返回值类型为整数型
//Add是自定义函数名
//(int a,int b)括号内表示需传入参数,格式为:变量类型 变量名
int Add(int a,int b) {
//return 需要返回的内容
return a+b;
}
2、函数的参数
参数相关问题有一篇文章已经详细描述。
点击以下链接查看
函数的参数及传参
3、函数的返回值
函数的返回值要注意的问题是,在函数中定义的局部变量是不能作为返回值的。
局部变量会在栈区开辟内存,函数结束后该变量内存有可能会被提前回收,所以返回一个局部变量是危险的。
下面代码中第一次打印结果正确,第二次及后面打印结果就会出错
int* add() {
int a = 10;
int b = 20;
return &a;
}
int main()
{
int* p = add();
cout << *p << endl;
cout << *p << endl;
cout << *p << endl;
cout << *p << endl;
cout << *p << endl;
cout << *p << endl;
cout << *p << endl;
}
4、函数的声明
函数在主函数下方时需要在主函数上方进行函数声明,函数在其他文件内定义时,要在头文件进行声明
int add(int x, int y);
//函数声明
//主函数
int main(){
add();
return 0}
函数的定义
int add(int x,int y) {
return x+y;
}
5、函数的分文件编写
函数可以单独放在一个.c文件中,需要添加该文件对应.h头文件
头文件需要将.c文件中的函数声明
主函数引入该头文件即可调用该文件函数
## //.c函数文件
#include<iostream>
#include"Add.h"
int Myadd( int const&a, int const&b) {
return a + b;
}
## //.h文件
#pragma once
int Myadd( int const & a, int const& b);
## .主函数文件
//头文件
#include <iostream>
//定义域
using namespace std;
#include "Add.h"
int main()
{
cout << Myadd(12, 12) << endl;
}
6、函数重载
同一作用域下,函数名可以相同,但是要以不同的参数作为区分。我们把相通函数名且有区分条件的函数叫做函数重载。
函数重载的区分条件有:参数的类型,顺序,个数。
int add(int x, int y) {
return x + y;
}
int add(int x, int y, int z) {
return x + y + z;
}
int main()
{
cout << add(12, 12) << endl;
cout << add(12, 12,12) << endl;
}
1、要注意,返回值不能作为区分条件,如果两个函数,函数名和参数一样,返回值不同,这不算重载,是不被允许的。
2、引用可以作为函数重载的条件,但是要注意的是,引用作为重载的条件时,函数传参不能直接传入字面常量,如果要传入字面常量,需要用const修饰该引用变量
3、这里还有一个坑需要注意:如果函数重载的参数有默认参数时,此时两个函数的参数数量不一样,所以编译器认为构成重载条件。但是由于是默认参数,两个函数均可以传入一个参数,此时调用函数时传入一个参数的话就会发生冲突,编译器不知道该调用哪一个函数。