c++ 函数笔记

本文详细介绍了C++中的函数参数,包括形参和实参的概念,展示了值传递如何在不影响实参的情况下改变函数内部的变量。此外,还讲解了函数声明的重要性,以及如何通过分文件来组织代码,包括创建头文件、源文件,并使用CMakeLists.txt进行编译。最后讨论了自定义头文件的使用及其在编译过程中的注意事项。
摘要由CSDN通过智能技术生成

 1. 函数的形参,实参

#include <iostream>
using namespace std;

int add(int a, int b); //a, b为形参

int main ()
{
    int c = 10;   //c,d 为实参
    int d = 20;
    int e = add(c,d);
    cout << "e:" << e << endl;
    return 0;
}

int add(int a, int b)
{
    int c = a + b;
    return c; 
}

 

2. 函数的值传递

当我们做值传递的时候,函数的形参发生改变,并不会影响实参的值。

#include <iostream>
using namespace std;
//值传递
//定义函数, 实现两个数字进行交换函数

void swap(int num1, int num2);


int main ()
{
    int a = 10;
    int b = 20;

    cout << "a: " << a << endl;
    cout << "b: " << b << endl;

    //当我们做值传递的时候,函数的形参发生改变,并不会影响实参的值。
    swap(a, b);
    cout << "a: " << a << endl;
    cout << "b: " << b << endl;
    return 0;
}


//如果函数不需要返回值,声明的时候可以写void
void swap(int num1, int num2)
{
    cout << "交换前:" << endl;
    cout << "num1: " << num1 << endl;
    cout << "num2: " << num2 << endl;

    int temp = num1;  //temp在函数执行完之后,被释放
    num1 = num2;
    num2 = temp;

    cout << "交换后:" << endl;
    cout << "num1: " << num1 << endl;
    cout << "num2: " << num2 << endl;


    //return; 返回值不需要的时候,可以不写return
}

 

变量内存释放参考 https://www.cnblogs.com/chuncn/archive/2011/04/12/2014273.html

 

3. 函数的声明

#include <iostream>
using namespace std;
//函数声明
//比较函数实现两个整形数字进行比较,返回较大的值
//提前告诉编译器函数的存在,可以利用函数的声明
//函数声明可以写多次, 但是定义函数只能有一次
int max(int a, int b);  //将函数声明放到头文件(.h)中

int main()
{
    int a = 10;
    int b = 20;
    cout << max(a, b) << endl;
}

int max(int a, int b)
{
    return a > b ? a : b;
}

三目运算符参考 http://c.biancheng.net/view/1363.html

 

4.函数的分文件编辑

作用:让代码结构更加清晰

函数分文件编写一般有4个步骤:

(1) 创建后缀名为.h的头文件

(2) 创建后缀名为.cpp的源文件

(3) 在头文件中写函数声明

(4) 在源文件中写函数的定义

一般工程文件由三部分组成 头文件(.h) 函数分文件(.cpp) 主函数文件(main.cpp)。

头文件(.h)中包含 #include <iostream> , using namespace std等等、声明的函数变量 int a; int b;等等、声明函数 int swap();等等。编辑完成后,比如把头文件保存为 swap.h

之后在函数分文件(.cpp)中 ,第一行 写 include "swap.h" ,同理主函数文件(main.cpp)第一行也要写 include "swap.h", 说明头文件和函数分文件(.cpp) 主函数文件(main.cpp)是有关联的。其中,swap.h是我们自定义的头文件 所以include 后面接的是引号。

接下来进行详细说明

工程目录下的文件如下图所示

头文件 swap.h

#include <iostream>
using namespace std;
void swap(int,int);

函数分文件function4.cpp

#include "swap.h"


void swap(int num1, int num2)
{
    cout << "交换前:" << endl;
    cout << "num1: " << num1 << endl;
    cout << "num2: " << num2 << endl;
    int temp = num1; 
    num1 = num2;
    num2 = temp;
    cout << "交换后:" << endl;
    cout << "num1: " << num1 << endl;
    cout << "num2: " << num2 << endl;
}

主函数文件 main.cpp

#include "swap.h"

int main ()
{
    int a = 10;
    int b = 20;

    cout << "a: " << a << endl;
    cout << "b: " << b << endl;
    swap(a, b);
    cout << "a: " << a << endl;
    cout << "b: " << b << endl;
    return 0;
}

CMakeLists.txt

cmake_minimum_required(VERSION 3.0)
project(test)
add_executable(aaaa function4.cpp main.cpp)

 

终端

mkdir build

cd build

cmake .. 

make

./aaaa

 

5. 关于自定义头文件的说明

自定义的头文件要么和源代码文件放在同一处,要么在编译的时候指明自定义头文件路径,这样编译器才能找到头文件,才能编译通过。

我遇到的错误:  自定义的头文件放到include文件夹下,但是在编译的时候没有指定头文件路径,就会报错没有找到 *.h的头文件。

自定义头文件编译方式1: 

自定义的头文件和源代码文件放在同一处

自定义头文件编译方式2: 

cmake声明头文件目录

 include_directories("D:/OSGEARTH/include")

具体如下:

目录,include中有 swap.h文件, src中有function4.cpp 和 main.cpp

swap.h文件没有变化,function4.cpp main.cpp第一行的 #include "swap.h" 也可以写成 #include <swap.h>

前提是在编译的时候声明头文件目录,重点是添加了include_directories("./include")这句话。

CMakeLists.txt

cmake_minimum_required(VERSION 3.0)
project(test)
include_directories("./include")
add_executable(aaaa ./src/function4.cpp ./src/main.cpp)

参考链接 https://zhidao.baidu.com/question/543412947.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值