【C++】 10_C++中的新成员

2018-12-20
阅读 3 分钟
1.4k
C++ 中的动态内存分配 C++ 通过 new 关键字进行动态内存申请 C++ 中的动态内存申请是基于类型的 delete 关键字用于内存释放

【C++】 9_函数重载分析 (下)

2018-12-20
阅读 3 分钟
1.7k
函数重载遇上函数指针 将重载函数名赋值给函数指针时 根据重载规则挑选与函数指针参数列表一致的候选者 严格匹配候选者的函数类型与函数指针的函数类型

【C++】 8_函数重载分析 (上)

2018-12-19
阅读 5 分钟
1.6k
重载的概念 重载(Overload) 同一个标识符在不同的上下文有不同的意义 如: "洗"和不同的词汇搭配后有不同的含义: 洗衣服,洗脸,洗脑,洗马桶,。。。 "play"和不同的单词搭配后有不同的含义:play chess, play piano, paly basketball,... 思考:重载在自然语言中是随处可见的,那么程序设计中是否也有重载呢? C++ 中...

【C++】 7_函数参数的扩展

2018-12-19
阅读 2 分钟
1.2k
函数参数的默认值 C++ 中可以在函数声明时为参数提供一个默认值 当函数调用时没有提供参数的值,则使用默认值 {代码...} 参数的默认值必须在函数声明中指定 问题:函数定义中是否可以出现参数的默认值?当函数声明和定义中的参数默认值不同时会发生什么? 当有函数声明时,函数定义中不可以出现默认参数,否则编译器报错...

【C++】 6_内联函数分析

2018-12-19
阅读 4 分钟
1.3k
常量与宏 C++ 中的 const 常量可以替代宏常数定义 const int A; <==> #define A 3 C++ 中是否有解决方案替代宏代码片段呢? 内联函数 C++ 中推荐使用内联函数替代宏代码片段 C++ 中使用 inline 关键字声明内联函数 {代码...} 内联函数声明时 inline 关键字必须和函数定义结合在一起,否则编译器会直接忽略内联请求...

【C++】 5_引用的本质

2018-12-19
阅读 4 分钟
1.7k
const 引用 在 C++ 中可以声明 const 引用 const Type* name = var; const 引用让变量拥有只读属性

【C++】 4_布尔类型和引用

2018-12-19
阅读 3 分钟
1.3k
C++ 中的布尔类型 C++ 在 C 语言的基础类型系统之上增加了 bool C++ 中的 bool 可取的值只有 true 和 false 理论上 bool 只占用一个字节

【C++】 3_进化后的 const 分析

2018-12-18
阅读 2 分钟
1.5k
const 修饰的变量是只读的,本质还是变量 const 修饰的局部变量在栈上分配空间 const 修饰的全局变量在只读存储区分配空间(现代C编译器) const 只在编译器有用,在运行期无用

【C++】 2_C 到 C++ 的升级

2018-12-18
阅读 3 分钟
1.6k
C 与 C++ 的关系 C++ 继承了所有的 C 特性 C++ 在 C 的基础上提供了更多的语法和特性 C++ 的设计目标是运行效率与开发效率的统一 C 到 C++ 的升级 C++ 更强调语言的实用性 所有的变量都可以在需要使用时再定义 {代码...} 对比:C 语言中的变量都必须在作用域开始的位置定义 【C89】 register 关键字请求编译器将局部变量...

【C++】 1_学习 C++ 的意义

2018-12-18
阅读 2 分钟
1.9k
1971年, Ken Thompson 和 Dennis Ritchie 对B语言进行了改良,使其能够直接产生机器码,C语言诞生 UNIX 开始用C语言重写,同时C语言在实践的过程中得到发展

【C】 48_函数设计原则 (完结)

2018-12-18
阅读 8 分钟
2.6k
函数从意义上应该是一个独立的功能模块(功能单一) 函数名要在一定程度上反应函数的功能 函数参数名要能够体现参数的意义 尽量避免在函数中使用全局变量以及局部静态变量(无状态函数)

【C】 47_递归函数分析

2018-12-18
阅读 2 分钟
2k
函数体内部可以调用自己 递归函数 函数体中存在自我调用的函数 递归函数是递归的数学思想在程序设计中的应用 递归函数必须有递归出口 函数的无限递归将导致程序栈溢出而崩溃

【C】 46_函数与宏分析

2018-12-17
阅读 4 分钟
1.4k
宏是由预处理器直接替换展开的,编译器不知道宏的存在 函数是由编译器直接编译的实体,调用行为由编译器决定 多次使用宏会导致最终可执行程序的体积增大(嵌入式环境中资源紧张) 函数是跳转执行的,内存中只有一份函数体存在 宏的运行效率比函数高,因为直接展开,无调用开销 函数调用时会创建活动记录,效率不如宏

【C】 45_函数参数的秘密 (下)

2018-12-17
阅读 2 分钟
1.9k
当函数调用发生时 参数会传递给被调用的函数 而返回值会被返回给函数调用者 调用约定描述参数如何传递到栈中以及栈的维护方式 参数传递顺序 调用栈清理 调用约定是预定义的可理解为调用协议 调用约定通常用于库调用和库开发的时候 从右向左依次入栈: __stdcall, __cdecl, __thiscall 从左向右依次入栈:__pascal, __fas...

【C】 44_函数参数的秘密 (上)

2018-12-17
阅读 3 分钟
2.1k
函数参数 函数参数在本质上与局部变量相同在栈上分配空间 函数参数的初始值是函数调用时的实参值 函数参数的求值顺序依赖于编译器的实现 操作符的求值顺序依赖于编译器的实现(+-*/...) 下面的程序输出什么?为什么呢? {代码...} 实例分析: 函数参数的求值顺序 {代码...} {代码...} 特别说明:此处暂时没有找到有其它求...

【C】 43_函数的意义

2018-12-17
阅读 3 分钟
2.1k
C语言中的函数 函数的由来 程序 = 数据 + 算法==>C程序 = 数据 + 函数 (定义算法) 函数的意义 模块化程序设计 C语言中的模块化 面向过程的程序设计 面向过程是一种以过程为中心的编程思想 首先将复杂的问题分解为一个个容易解决的问题 分解后的问题可以按照步骤一步步完成 函数是面向过程在 C 语言中的体现 解决问...

【C】 42_内存操作经典问题分析 二

2018-12-10
阅读 4 分钟
1.5k
常见内存错误 结构体成员指针未初始化 结构体成员指针未分配足够的内存 内存分配成功,但并未初始化(尤其字符串操作时) 内存操作越界 实例分析: 常见内存错误 1 {代码...} {代码...} 实例分析: 常见内存错误 2 {代码...} {代码...} 内存操作的交通规则 动态内存申请之后,应该立即检查指针值是否为 NULL, 防止使用 N...

【C】 41_内存操作经典问题分析 一

2018-12-10
阅读 2 分钟
2k
指针变量中的值是非法的内存地址,进而形成野指针 野指针不是 NULL 指针,是指向不可用内存地址的指针 NULL 指针并无危害,很好判断,也很好调试 C 语言中无法判断一个指针所保存的地址是否合法

【C】 40_程序中的内存布局

2018-12-10
阅读 2 分钟
2.5k
程序和进程不同 程序是静态的概念,表现形式为一个可执行文件 进程是动态的概念,程序由操作系统加载运行后得到进程 每个程序可以对应多个进程 每个进程只能对应一个程序

【C】 39_程序中的三国天下(栈、堆、静态存储区)

2018-12-09
阅读 3 分钟
1.8k
程序中栈 栈是现代计算机程序里最为重要的概念之一 栈在程序中用于维护函数调用上下文 函数中的参数和局部变量存储在栈上 栈保存了一个函数调用所需的维护信息 在程序中,栈是一种行为,先进后出;其它数据信息:函数调用时产生的临时变量等;ebp 指向函数调用后的返回地址esp 栈顶指针。 函数调用过程 每次函数调用都对...

【C】 38_动态内存分配

2018-12-09
阅读 5 分钟
3.1k
C 语言中的一切操作都是基于内存的 变量和数组都是内存的别名 内存分配由编译器在编译期间决定 定义数组的时候必须指定数组长度 数组长度是在编译期就必须确定的

【C】 37_指针阅读技巧分析

2018-12-08
阅读 2 分钟
2k
左右法则 从最里层的圆括号中未定义的标识符看起 首先往右看,再往左看 遇到圆括号或方括号时,可以确定部分类型,并调转方向 重读 2,3 步骤,直到阅读结束

【C】 36_函数与指针分析

2018-12-07
阅读 3 分钟
1.7k
C 语言中的函数都有自己特定的类型 函数的类型由返回值,参数类型和参数个数共同决定int add(int i, int j) 的类型为 int(int, int) C 语言中通过 typedef 为函数类型重命名typedef type name(parameter list)

【C】 35_数组参数和指针参数分析

2018-12-07
阅读 3 分钟
2k
思考: 为什么 C 语言中的数组参数会退化为指针? 数组参数退化为指针的意义 C 语言中只会以值拷贝的方式传递参数 当想函数传递数组时,可有有以下方式: 将整个数组拷贝一份传入函数【×】 将数组名看作常量指针传递数组首元素地址 【√】 C 语言以高效作为最初设计目标 传递参数的时候如果拷贝整个数组则执行效率大大降低...

【C】 34_多维数组和多维指针

2018-12-07
阅读 4 分钟
3.1k
指向指针的指针 指针的本质是变量 指针会占用一定的内存空间 可以定义指针的指针来保存指针变量的地址 {代码...} 问题 为什么需要指向指针的指针 指针在本质上也是变量 对于指针也同样存在传值调用与传址调用 实例分析: 重置动态空间大小 {代码...} {代码...} 二维数组与二级指针 二维数组在内存中以一维的方式排布 二...

【C】 33_main 函数与命令行参数

2018-12-07
阅读 3 分钟
2.9k
main 函数的概念C 语言中 main 函数称之为主函数一个 C 程序是从 main 函数开始执行的下面的 main 函数定义正确吗?A. {代码...} B. {代码...} c. {代码...} D. {代码...} 在 gcc version 7.5.0 下,A B C D 编译无警告,无错误,运行正常。(注:但其它版本或厂商编译器可能有不同结果)其中 D 为最标准main() 函数的本...

【C】 32_数组指针和指针数组分析

2018-12-06
阅读 3 分钟
2.2k
问题: array 代表数组首元素的地址,那么 matrix 代表什么? array 和 &array 的地址值相同,但意义不同,那么它们所代表的类型相同吗?

【C】 31_字符串典型问题分析

2018-12-06
阅读 3 分钟
1.6k
当函数只有 3 个参数时,如果第三个参数没有包含格式化信息,函数调用没有问题;如果第三个参数包含了格式化信息,但缺少后续对应参数,则程序行为不确定。

【C】 30_C语言中的字符串

2018-12-06
阅读 3 分钟
1.4k
字符串是有序字符的集合 字符串是程序中的基本元素之一 C 语言中没有字符串的概念 C 语言中通过特殊的字符数组模拟字符串 C 语言中的字符串是以 '\0' 结尾的字符数组

【C】 29_指针和数组分析 (下)

2018-12-06
阅读 4 分钟
1.4k
问题: 数组名可以当作常量指针使用,那么指针是否也可以当作数组名来使用呢? 数组的访问方式 以下标的形式访问数组中的元素 {代码...} 以指针的形式访问数组中的元素 {代码...} 下标形式 VS 指针形式 指针以固定增量在数组中移动,效率高于下标形式 指针增量为 1 且硬件具有硬件增量模型时,效率更高 下表形式与指针形...