c++查漏(中级

本文介绍了C++编程中的函数间参数传递方式,包括值传递、引用传递和指针传递。讲解了多文件结构在团队协作中的应用,强调了头文件在管理函数和全局变量声明中的作用。还详细阐述了编译预处理指令如#include、#define和条件编译。此外,文章涵盖了C++中的特殊函数形式、系统函数库的使用以及自定义数据类型typedef的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

结构化程序设计思想与要点

函数间参数传递的3种方式

1.值传递
2.引用传递
3.指针传递

多文件结构(常见于团队协作)

1.cpp 2.cpp 3.cpp …
当源代码很长 函数很多的时候,分散保存在不同的源程序文件中,来组织和管理。
一旦要调用,必须先声明。
这里写图片描述

声明外部函数原型 与 外部全局变量

extern void SUM();
void SUM();  // 可省略extern关键字

extern double number;  //不可省略extern!
extern double number = 0; //错误!不能初始化!
头文件

比如程序员甲编写了一个C++源程序文件1.cpp,其他程序员只要访问1.cpp中的几个函数或全局变量,就必须在自己的文件中依次写几条声明,很麻烦。
程序员甲在编写好1.cpp后,另外再编写一个头文件,其中包含1.cpp所有外部函数和外部全局变量的声明语句。
习惯上,将这个头文件命名为1.h或1.hpp,(即同名,拓展名.h或.hpp),即 #include”1.h”
以下甲、乙互相编写了头文件方便对方
这里写图片描述
这里写图片描述

static是多义词,在定义全局变量和局部变量时有区别??!!

静态函数 与 静态变量

语句前面加“ static ”
静态全局变量只能被本文件内使用!不能被其他文件使用!

编译预处理指令

以 # 开头,结尾不加 ;
常见的预处理指令有:

1.文件包含指令 #include
  1. #include<>或”“通用,,区别是 编译器先到哪里去搜索该文件
    1.通常用于插入头文件(.h)
    2.将指定内容插入该指令所在的代码位置
    3.<文件名>的填写规则
2.宏定义指令 #define

用来减轻工作量,方便快捷
0.用一个标识符来表示一段代码文本,其中的标识符称:宏名,所表示的代码文本称:宏文本
1.宏替换
2.C++有3种形式的宏:无参宏、有参宏(有无未知参数存在)、空宏
3.已定义的宏可以用宏删除指令 #undef 删除

3.条件编译指令

允许程序员将不同版本的源代码(比如下例中英混编)编写在同一程序文件中,便于管理和维护修改
有2种格式

#ifdef 空宏名
    代码段1      
#else           
    代码段2      //如果指定的空宏已经定义,则编译代码段1,否则编译2,若没有2,则省略#else
#endif

这里写图片描述

#ifdef 常量表达式  //常量表达式:只能包含常量或符号常量
    代码段1      
#else           
    代码段2      //如果指定的常量表达式结果不为0,则编译代码段1,否则编译2,若没有2,则省略#else
#endif

这里写图片描述

几种特殊形式的函数
1.带默认形参(先写没有默认值的形参,再写有默认值的)
void add(int a , int b = 5)
{}
2.重载函数

C++规定:如果两个函数的形参个数不同,或数据类型不同,那么可以重名。重名的函数被称为重载函数。在编译中,由编译器自动调用最匹配的。

3.内联函数

函数跳转会降低程序的执行效率。如何平衡呢? 即这一种能兼顾两种的特殊的函数。
1.原理:在编译源程序时将函数代码直接镶嵌到每一个调用语句处,而在执行时不再进行函数跳转和数据传递。
2.格式( inline)

inline double sum()
{}

3.使用范围
3.1内联函数必须是简单函数,如果函数体比较复杂(比如包括循环)就不行了。
3.2只有被多次调用才能体现出内联函数的效率,所以适用于频繁调用的简单函数。

4.主函数main

https://www.icourse163.org/learn/CAU-368007?tid=1002236002#/learn/content?type=detail&id=1002987280&cid=1003474757

5.递归函数

直接或间接调用自身

..........
if (递归终结条件)
    取得已知结果
else
    按照递归公式调用自身

这里写图片描述

系统函数

程序员需要先阅读编译系统提供的手册,学习各系统函数的调用语法,并用 #include 指令包含相应的头文件,标准C库头文件的扩展名都是“ .h ”
C++语言全盘继承了C语言的语法规则,以及标准C库

1.包括:标准C库 和 C++标准库(新)
2.输入输出函数:#include < stdio.h >
3.数学函数:#include < math.h >

平方根函数、指数对数三角函数……

4.字符串处理函数:#include < string.h >

求字符数组中的字符串长度strlen()
拷贝、连接等……

5.动态内存分配函数:#include < stdlib.h >

这里写图片描述

6.命名空间

地名加上国度,就避免了“重名”的问题,而“国度”就是“命名空间”的概念。
22:00https://www.icourse163.org/learn/CAU-368007?tid=1002236002#/learn/content?type=detail&id=1002987280&cid=1003474758

7.C++语言的系统类库

cin、cout是标准输入流对象和标准输出流对象,而使用cin和cout对象需要以下两行:

#include<iostream>         //包含cin、cout的相应头文件
using namespace std;       //并且声明其命名空间“std”
8.多文件结构下程序员与函数の关系

这里写图片描述

结构化程序设计的应用与回顾

代码重用

一个编好的C++函数可以被同一项目中的多人调用,也可以在今后的项目中继续使用,这就是函数代码的重用。
市场上还有很多厂家为程序员提供编好的、可实现不同功能的函数库
调用这些函数库中的函数,程序员就可以快速开发出各种功能强大的应用程序,这就是程序的应用开发

windows图形用户界面(GUI)程序 Win32 API函数库开发示例

https://www.icourse163.org/learn/CAU-368007?tid=1002236002#/learn/content?type=detail&id=1002987280&cid=1003474759

自定义数据类型 typedef

用法有二:

1.为现在的数据类型重新命一个别名
typedef unsigned char AGE;
AGE x;  //等价于:char x;
2.定义指针类型
typedef int* IPointer;
IPointer p1; //等价于: int* p1;
3.定义数组类型
typedef char NAME[10];
NAME name1; //等价于: char name1[10];
4.枚举类型

这里写图片描述
这里写图片描述

5.联合体类型(描述复杂数据

1.特点:变量成员共用同一内存单元,同一时刻只能保存一个成员的数据
这里写图片描述
这里写图片描述
这里写图片描述

6.结构体类型(注意最后的分号 ;

这里写图片描述
这里写图片描述
这里写图片描述

本章回顾

这里写图片描述
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值