IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++琐碎知识整理 -> 正文阅读

[C++知识库]C++琐碎知识整理

C++琐碎知识整理

1.C++与C一样,用终止符(terminator)将两条语句分开,终止符是一个分号,它是语句的结束标记,是语句的组成部分,而不是语句之间的标记,所以C++语句一定不能省略分号。

2.通常,main()被启动代码调用,而启动代码是由编译器添加到程序中的,是程序和操作系统之间的桥梁,该函数头描述的是main()和操作系统之间的接口。

3.在C语言中,省略返回类型相当于说类型是int,但在C++中淘汰了这种用法。main()函数返回类型是void的不是当前标准强制的一个选项,因此在有些系统上不能工作,应该避免这种格式。
在这里插入图片描述

4.如果编译器到达main()函数结尾时没有遇到返回语句,则认为结尾有return 0; 只适用于main()函数
在这里插入图片描述
可以看到普通的要求要返回的函数没有return的情况会有警告,但不会报错,而main函数可以没有return

5.C++风格的注释是两个正斜杠// ,而C风格的注释是 \ * * \ ,现在C++标准也在C语言中加了//注释

6.预处理器操作:在源代码被编译之前,替换或添加文本,#include这一行就是把iostream文件的内容替换这一行,因为这是一个预处理指令,并不是一个C++语句,所以不用分号作为结束。

7.C语言中头文件扩展名用.h,C++保留了这种用法。C++风格的头文件没有扩展名,有一些在C的基础上去掉.h,有些加上前缀c,表示来自C语言,比如 math.h -> cmath .

8.在C++中,没有.h的头文件可以包含名称空间,有.h就不行,例如

使用 iostream.h 和 cout 或者 使用iostream 和 std::cout

(我用iostream.h 和 cout 会报错,显示找不到iostream.h )

9.使用using编译指令使得名称空间的所有名称都可用,这是一种偷懒的做法,在大型项目中这是一个潜在的问题。最好是只使需要的名称可用。比如using std::cin;,对于简单程序来说无关紧要。
在这里插入图片描述

10.cout和cin都是一个预定义对象,可以智能识别并处理信息。

11.插入运算符<<将右侧的信息插入到流中,这是一个运算符重载的例子,<<也可表示位运算的左移运算符,编译器通过上下文来确定运算符的含义。

12.C语言本身也有一些运算符重载的情况,比如&表示取地址运算符,也可以表示按位与,*表示乘法,也表示间址访问。但是C语言不能用户自定义函数重载。

13.在C++中输出时另起一行用endl控制符,比如cout<<endl;这样的用法,在C中则是cout<<‘\n’;它们的区别是,endl会刷新缓冲区,将内容立即刷新输出,而’\n’则没有,这就是为什么用’\n’有时候原本应该先输出再输入,结果是先输入再输出,因为在你输入的时候输出的内容还留在输出缓冲区里没flush出来。用endl可以及时刷新现实,但是对于输出量大的情况,用endl频繁刷新会导致输出花费太多实践,因此用’\n’可以可以减少输出花费的时间,在比赛中常用这种技巧。

14.一行代码中不可分割的元素叫做标记(token),通常必须用空格,制表符或回车将两个标记分开。空格,制表符和回车统称为空白(white space).

15.声明语句:

int a;

这条语句提供了两项信息:1.需要的内存 2.该内存单元的名称。指出该程序需要足够的大小空间来存储一个整数,大小取决于实现。指出程序将使用a来标识存储在该内存单元中的值。

16.在C++中所有变量都必须声明,否则当使用时编译器将报错。

17.定义:程序中的声明语句叫做定义声明(defining declaration)语句,简称定义。声明不一定是定义。

18.在C中变量的声明都必须放在函数刚开始的位置,但C++中只要保证在声明后使用,且在同一个作用域里就行了。

19.C++和C有一项不寻常的特性–可以连续使用赋值运算符。

a=b=1;

从右向左进行,1被赋给b,b再赋给a

20.C++程序必须为程序中每个函数提供原型。函数原型只描述函数接口,描述的是发送给函数的信息和返回的信息。函数定义中包含了函数的编译代码。库文件包含了函数的编译代码,头文件包含了函数原型。

21.在创建变量时对它赋值,这个过程叫做初始化(initialization).

int a=1;

22.在有些语言中,又返回值的函数称为函数(function),没有返回值的函数称为过程(procedure)或子程序(subroutine)。但在C和C++中都称为函数。

23.C++不允许将函数定义嵌套在另一个函数定义里,每个函数定义都是独立的,所有函数的创建都是平等的。

23.可以认为,main()函数被操作系统调用,返回值通常也被叫做退出值,为0意味着程序运行成功,非0则意味着出现问题。

24.main不是关键字,但它是一个必不可少的函数名称,可以把main用作变量名,但有些时候会出错,因此最好不要这样做。

25.让程序能够访问名称空间std的方法有很多种,下面是常见的四种。

①将using namespace std;放到函数定义前面。

②将using namespace std;放到函数定义里,这样函数里就可以用std的函数了。

③用using std::cout这样的编译指令。

④完全不使用using,而在需要使用std中的元素的时候使用前缀std::

在这里插入图片描述
由图可知,这里的using作用域在main函数里

1.C++对于名称的长度没有限制,但有些平台有长度限制。与C(C99标准)不同的是,后者只保留名称中的前63个字符有意义。

2.C++确保了数据类型的最小长度,short至少是16位,int至少与short一样,long至少32位且至少与int一样,long long至少64位,且至少与long一样。

3.在美国基本字符集通常是ASCII和EBCDIC字符集,在使用这两种字符集的系统中,C++字节通常包含8位,而有些系统用更大的字符集,比如Unicode,因此有些实现有可能用16位或32位的字节。

4.对类型名用sizeof运算符时应将名称放在括号中,但对变量名使用sizeof时括号是可选的。

5.C++有一种C语言没有的初始化语法:

int a(123);

6.如果不对函数内部定义的变量初始化,该变量的值是不确定是,这意味着该变量的值是它被创建之前,相应内存单元保存的值。所以在声明变量时对它初始化,可避免以后忘记给他赋值的情况发生。

7.C++11中可以用统一的初始化方式:

int a={123};

等号也可以不用

int b{456};

大括号里也可以不包含任何东西,这时变量将被初始化为0

int c={};

int d{};

这有助于防范类型转换错误,是一种通用的初始化语法。

8.整形字面值是显示地书写的常量,C++用前一两位标识数字常量的基数。如果第一位位1-9则基数位10,如果第一位是0,第二位是1-7则基数为8,如果前两位为0x或0X则基数是16。默认情况下cout以十进制格式现实整数。

在这里插入图片描述
在这里插入图片描述

由图可知,实际上只要第一位是0,第二位是0-7,就会被当成是8进制。

9.char类型是另一种整型,虽然它最长用来处理字符,但也可以将它用做比short更小的整型。

10.当输入字符M时,cin将键盘输入的M转换成77,输出时,cout将值77转换成所显示的字符M,也就是说内存里存的其实是77这个数字,当输出时cout会自动识别到char类型,并输出77对应的字符。

11.通用字符名。用法类似转义字符,以\u或\U打头,\u后面是4个十六进制位,\U后面是8个十六进制位。表示字符的ISO 10646码点。

12.char也可以有符号和无符号,signed char范围从-128-127,unsigned char 范围从0-255

13.cin和cout将输入和输出看作是、char流,因此不适于用来处理wchar_t类型。iostream头文件的最新版本提供了作用相似的工具–wcin和wcout,用于处理wchar_t。可加上前缀L来指示宽字符常量和宽字符串

14.随着编程人员日益熟悉Unicode,类型wchar_t不能再满足需求,它的长度和符号随实现而异,因此C++11新增了类型char16_t和char32_t,都是无符号的,前者16位,后者32位,前缀u表示char16_t字符常量,前缀U表示char32_t字符常量.

15.const限定符。应该在声明中队const初始化,否则该常量的值是不确定的,且无法修改。

在这里插入图片描述

由图可知,不允许声明const时不初始化,不能对常量修改。

16.const比#define好:

? ①const可以明确指定类型

? ②const可以利用作用域将定义限制在特定的函数或文件中。编译器处理宏的时机是预处理阶段,编译器按文本顺序处理,遇到宏时就定义一个宏变量。#define是否生效取决于文本的顺序。
在这里插入图片描述
如图,#define放在了main之前的一个函数里,虽然没有调用func,但还是起作用了,而把#define放到main之后就不行了。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-07-05 23:22:06  更:2022-07-05 23:24:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 17:13:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码