十二、函数

一、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、这里还有一个坑需要注意:如果函数重载的参数有默认参数时,此时两个函数的参数数量不一样,所以编译器认为构成重载条件。但是由于是默认参数,两个函数均可以传入一个参数,此时调用函数时传入一个参数的话就会发生冲突,编译器不知道该调用哪一个函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值