栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > C/C++/C#

牛客网C++笔记

C/C++/C# 更新时间:发布时间: 百科书网 趣学号
第二章:复合类型 2.51 C++内存管理 C++的内存的划分


堆区:由new运算符申请内存,使用完记得释放

C++管理数据内存的方式


所属函数被调用时自动产生,存储在栈内存中

getSum()运行结束时销毁上面两个a,b

静态变量存储在全局区

跟踪新分配的内存的位置更困难。

2.52 普通局部变量和普通全局变量

普通局部变量:

1.代码中的位置:在代码块{}内部定义的变量,就是局部变量。包括方法参数列表定义的变量。

2.存储空间:存在栈内存中

3.作用范围:离他最近的大括号中间

4.生命周期:代码块执行的时候创建,执行结束销毁

5.注意事项:

​ a.局部变量必须先初始化再使用

​ b.同一个作用域中不能有同名变量

​ c.不同的作用域中的局部变量同名时,采用就近原则


普通全局变量:

1.代码中的位置:文件中,在函数外面定义的变量就是普通全局变量

2.存储空间:存在全局区

3.作用范围:当前的源文件及其他的源文件中

​ 使用其他源文件中的全局变量时需要用extern声明

4.生命周期:整个程序运行的过程中

5.注意事项:

​ a.普通全局变量,如果不初始化,默认值为0

​ b.普通全局变量和普通局部变量同名,采用就近原则

2.53 静态局部变量和静态全局变量

静态局部变量:在普通局部变量前加上static进行修饰

1.代码中的位置:在代码块{}内部定义的变量,用static修饰

2.存储空间:存在全局区

3.作用范围:离他最近的大括号中间
4.生命周期:整个程序进程

5.注意事项:

​ a.静态局部变量,如果不初始化,默认值为0

​ b.不同的作用域中的静态局部变量同名,采用就近原则

​ c.静态局部变量如果被初始化语句执行多次,只有第一次有效

静态全局变量:

1.代码中的位置:文件中,在函数外面定义的变量,且使用static修饰

2.存储空间:全局区

3.作用范围:只能在当前源文件中有效

4.生命周期:整个程序进程

5.注意事项:

​ a.静态全局变量,如果不初始化,默认值为0

​ b.静态全局变量的作用域只在当前源文件中

2.54 类型别名

给已经存在的数据类型建立别称
区别:

其中pb不是float类型的指针

使用:

#define my_char char

typedef char my_char

注意别名和原类型的顺序

C++ clock() :返回程序开始执行后所用的系统时间

​ 2.类型使用 clock_t 防止类型不统一

第三章:函数 3.1 函数基础知识复习

数组不能作为返回值返回


3.2 函数分文件编写

把功能相同或相似的函数放在同一个源文件中


.h 文件中存的是函数的声明

3.3 防止头文件重复包含



1.


3.

3.4 指针变量作为函数参数



3.5 指针作为函数返回值类型

函数返回指针类型数据,返回一个地址


注意:不要返回局部变量的地址,局部变量当函数调用完毕就销毁了。

3.6 函数内修改外部指针的指向

函数的内部修改外部变量的值

传递的内容为指针变量的地址

3.7 函数和数组


写一个遍历数组元素的函数,将数组作为参数传递进来,在函数中遍历数组元素

有问题:数组传递过后数组arr大小改变了

正确做法:传入数组首元素地址,和数组大小

3.8 函数和数组案例

先写头文件,再写源文件




使用:


3.9 函数和二维数组


输出值为:2

3.10 函数和字符串


字符串作为函数参数

3.21 字符处理函数



3.22 字符串拷贝和拼接函数



3.23 字符串比较函数



3.24 字符查找函数





优化:

3.25 字符串查找函数

在字符串中查找子字符串






优化:

3.26 字符串切割函数





使用循环进行优化:

3.27 字符串转换函数




3.28 函数和结构体


计算两个结构体求和


缺点:当结构体比较大时会占用较大的内存空间,考虑直接传地址

3.29 主函数传参





运行结果:

3.30 递归



一般方法:

使用递归:

递归一定要有出口


遇到出口后逐次返回。

3.31 递归案例



使用for循环完成:

使用递归:

3.32 函数指针





输出:函数名就是函数的地址
声明:加*和括号()
*pf表示获取函数内容 pf表示函数地址(等于函数名)




优化:传递函数指针给estimate()函数

3.33 宏函数



程序编译阶段,用1024替换所有的MAX

宏名都大写


使用宏函数的注意事项:
保证运算的完整性,使用括号

宏函数使用场景:把频繁调用的和短小的函数,封装成宏函数
优点:以空间换时间
相当于每一处调用的地方都复制了一份代码

3.34 内联函数

宏函数缺陷:
1.需要加括号保证运算完整
2.
1.



2.

输出:12

在两处进行了替换,++ 了两次


也是用空间换时间
声明和定义时都要加 inline 关键字


是否编译为内联函数由编译器决定

3.35 引用


比指针更加简单好用






修改rnum 就是修改 num


地址都是相同的



表示用b给ref赋值,而不是改变引用

3.36 引用作为函数参数

按值传递,按指针传递,按引用传递




3.37 常量引用


左值:可以出现在赋值符号左边的值



3.38 引用和结构体




按值传递:

按引用传递:


3.39 引用作为函数返回值




引用作为函数返回值是可以修改的


加const防止被修改

3.40 默认参数





提高使用函数的灵活性





运算符重载中使用

3.41 函数重载






类型和顺序

3.42 函数重载的注意事项



const普通变量按值传递,不算重载关系


指针传递和引用传递可以用const进行重载


3.43 extern C - 基础语法


编译完后函数名称不一样了



编译出错,看下回分解

3.44 extern C - C、C++混合开发






优化:

math.h头文件

3.45 extern C - _cplusplus


c文件和c++文件不能同时使用这个头文件
希望:c文件调用的时候不加extern 而c++文件调用的时候加上

使用条件编译

3.46 单独编译


g++ main.cpp fun.cpp

存储持续性




作用域和链接性


3.47 存储持续性、作用域、链接性 存储持续性






const修饰的全局变量:

3.48 定位new运算符

动态存储持续性:动态内存是由new和delete运算符进行控制的,而不是由作用域和链接性控制的



使用运算符重载语法


3.49 作用域解析运算符





3.50 名称空间



声明:
调用:








3.51 using声明和using编译指令






第四章:面向对象 4.1 面向对象概述




把实体抽象成对象
程序由对象组成


4.2 类和对象

创建对象,通过调用对象实现功能


属性+行为

数据表示和 操纵数据的方法
数据 和 函数

方法==函数
对象是类的具体体现

一个类可以有多个对象

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/296359.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号