C++ Primer

2011.8.7


头文件通过inclue预处理器(通常捆绑在编译器中)指示符 而成为我们程序的一部分

#include指示符读入指定文件的内容,有两种格式:

#include<some_file.h>: 表明这个文件是一个工程文件或标准头文件,查找过程会检查预定义的目录

#include"some_file.h": 表明该文件是用户提供的头文件,查找该文件时从当前目录开始


#ifndef  #endif 检查预编译器常量在前面是否已经被定义

#ifdef    #endif 指示符判断一个预处理器常量是否已定义, 以便有条件地包含程序代码


编译c++程序时,编译器自动定义了一个预处理器名字__cplusplus        c是__STDC__

比较有同的预定义名字:__LINE__,  __FILE__,  __TIME__.  __DATE__


assert()是C语言标准库中提供的一个通用宏处理器宏

#include<assert.h>   


#include<cassert>

using namespace std;

库文件厂商用名字空间来控制全局名字空间污染(即名字冲突)问题 ,以避免他们的库污染了用户程序的名字空间


输入/输出流(iostream )库:cin  cout  cerr

文件输入/输出 (fstream )库


C++内置数据类型 :int  float  double boolean char

        标准库 : 字符串、复数、vector

在内置数据类型与标准库类的类型之间是复合类型 ,特别是指针和数组


静态内存分配 :在程序执行之前进行的

静态对象是有名字的变量,直接对其操作;动态对象是没有名字的对象,通过指针间接操作

静态对象的分配与释放由编译器自动处理。


int eval = 11;

int *p = &eval;

eval = eval + 1;

*p = *p + 1;




源文件和头文件

源文件被直接编译,也就是说源文件将直接被编译为obj文件。而头文件如果没有被任何源文件包含的话,将不会被编译。

现在很多编译器支持头文件的预编译,以提高编译效率(尤其是对于STL头文件,一堆函数在里面)


gcc编译源码四个步骤:

1:预处理 :把包含的头文件编译进来

2:编译 :检查语法错误,确定代码要做的工作

3:汇编 :把编译阶段输出的.s文件转换成二进制目标代码

4:链接 :把汇编阶段生成的.o文件链接成可执行文件



静态变量 只在第一次进入函数的时候初始化,而全局变量 是进入程序的时候就初始化了,另外,全局变量是对整个程序可见的,静态变量只在函数内可见。(如果是类的静态变量的话,倒是可以用类名加变量名访问,但是可以private,而全局变量不能设置权限


### C++ Primer 相关资源概述 对于学习 C++ 的初学者或进阶开发者,C++ Primer 是一个非常经典的书籍选择。以下是一些与 C++ Primer 相关的资源和补充信息: #### 1. C++ Primer Plus C++ Primer Plus 是一本广泛推荐的学习 C++ 的书籍[^1]。它以清晰易懂的方式介绍了 C++ 的基础知识,并涵盖了从基本语法到高级特性的内容。这本书适合初学者,同时也为有一定编程经验的人提供了深入学习的机会。 #### 2. Programming: Principles and Practice Using C++C++ 的创造者 Bjarne Stroustrup 编写的《Programming: Principles and Practice Using C++》是一本非常适合初学者和中级开发者的书籍[^2]。书中不仅介绍了 C++ 的基础语法,还强调了编程的基本原则和实践方法。尽管这本书并不是直接的 C++ Primer,但它可以作为学习 C++ 的补充材料,帮助理解更深层次的概念。 #### 3. Exceptional C++ (Herb Sutter) 虽然这本书并不直接属于 C++ Primer 系列,但它的内容对深入理解 C++ 的核心机制非常有帮助[^3]。通过一系列谜题的形式,作者 Herb Sutter 深入探讨了资源管理、异常安全、RAII(Resource Acquisition Is Initialization)等重要主题。这些内容可以作为学习 C++ Primer 后的进阶阅读材料。 #### 4. 在线教程和代码示例 除了书籍之外,还有一些在线资源可以帮助学习 C++ Primer 的内容: - **Cplusplus.com** 提供了丰富的 C++ 参考资料和教程,包括标准库的使用说明。 - **GeeksforGeeks** 提供了许多 C++ 编程实例和练习题,适合巩固 C++ Primer 中学到的知识。 - **LeetCode 和 HackerRank** 提供了大量基于 C++ 的算法和数据结构问题,可以帮助将理论知识应用于实际问题中。 #### 示例代码:C++ Primer 中的常见概念 以下是一个简单的 C++ 示例代码,展示了如何使用标准模板库(STL)中的向量(vector)和迭代器(iterator),这是 C++ Primer 中的重要内容之一: ```cpp #include <iostream> #include <vector> int main() { // 创建一个向量并初始化 std::vector<int> numbers = {1, 2, 3, 4, 5}; // 使用迭代器遍历向量 for (auto it = numbers.begin(); it != numbers.end(); ++it) { std::cout << *it << " "; } return 0; } ``` 此代码片段展示了如何操作 C++ 标准库中的容器类 `std::vector`,以及如何使用迭代器访问其元素。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值