首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C+编程知识快速复习,看这一篇就够了

C++编程知识快速复习(上)(精华高效全面版)

总第001篇

C++知识比较多,也比较乱,对于我们长期从事实战开发的人员来说,很多基础知识很容易遗忘,自己看书复习又没有那么多时间,即于此,在接下来的三篇文章,概括讲解C++编程知识精华,旨在让大家可以快速的复习和翻阅,让开发更有效率。

1

C++基本结构

C++语言由头文件与源文件组成。

头文件中包含:版权与版本信息、宏定义、函数声明和类的声明。宏定义为是了防止头文件被重复引用。引用头文件则直接在系统库中查找头文件;“ ”引用头文件则先在当前工程目录下查找,若工程目录中不存在然后在系统库中查找。

源文件中包含:版权与版本信息,对头文件的引用,系统功能代码的实现。用ifndef/define/endif结构产生预处理的宏定义块。类成员函数可以在类声明中被定义,并且自动生成内联函数,这虽然会使书写方便,但会造成风格上的不一致,因此建议头文件中只存放声明而不定义。

头文件的作用:a.很多时候不便公开头文件代码,用头文件来调用库功能,编译器从库中提取相应的代码;b.头文件能加强安全类型的检查,如果接口实现错误会报错,以便开发者调试。

2

C++基本要素

标识符:只能是字母、数字、下划线组成,且不能以数字开头。标识符在C++中区分大小写,长度是任意的,一般前1024个是有意义的。C语言中一般前16个是有效的。

常量:在运行时不能被改变,在定义常量时可以设置初始值。对于常量,编译器将其放置于一个只读的存储区域。

变量:在程序中可以被随意赋值,对于每一个变量都有两个属性:左值和右值。左值是指变量的地址值,即存储变量的内存地址;右值是变量的数据值,即内存地址中存储的数据。

变量初始化的几种形式如下图:

3

变量的存储类型

变量的声明是告知编译器变量的名称和数据类型,变量的定义是为变量分配存储区域。使用extern只声明而不定义变量;若一个文件中声明定义一个全局变量int var=0; 在另一个文件中声明extern int var; 即可访问此变量;

static存储类型表示变量在函数或文件内的“持久性”,也称为静态变量,静态变量可分为局部静态变量和全局静态变量。

局部静态变量:函数内的变量用static修饰时,将被分配在持久的存储区域,当函数调用结束后并不释放,保留其值以便下次调用。局部静态变量的作用域为当前函数,不能被外界函数和文件访问;

全局静态变量:作用域仅限于当前定义的文件,不能被其它文件使用extern关键字访问;

使用register关键字,表示变量将被放置在CPU寄存器中,访问register变量要比访问普通变量快得多,但 register只能用于局部变量或作为函数的形式参数,不能用来定义全局变量。

变量有静态存储和动态存储,全局变量和静态变量是静态存储的,普通的局部变量是动态存储的,auto关键字表示变量动态存储,默认情况下,局部变量均属于auto变量。

4

数据类型

数值类型分为整型和实型,整型又分为有符号型和无符号型。下图是各种类型及字节数:

注意:两个实数比较,尽量不要使用“==”或“!=”,而要使用“>=”或“

字符类型:C++中用单引号来确定字符变量,用双引号来确定字符串变量,字符是以ASCII的形式存储的,因此可以直接将整数赋值给字符变量。字符存储用一个字节。

数组类型:数组的初始化要注意一些细节,如下图。定义二维数组时,可以省略第一维的长度,但不可以省略第二维的长度。

布尔类型:布尔类型和整数类型可以相互赋值

枚举类型:枚举类型是用int类型实现的,占用4个字节,定义格式为:enum,定义枚举类型时可以为各常量提供一个整数值,默认情况第一个数为0,没有定义的值应为前一个值加1。在定义函数时将函数参数设置为枚举类型,这样可以限制调用函数必须提供枚举类型中的某个常量,而不能随意输入一个整数。

结构体类型:定义格式为struct; 若只要定义一次结构体类型变量,可以不写结构体类型名称。访问结构体成员用“.”,两个结构体变量可以直接赋值。

结构体空间分配问题:涉及字节对齐问题,即编译器在为结构体变量分配空间时,保证下一个成员的偏移量应为该成员数据类型长度的整数倍。在开发应用程序时,有时要用一个字节表示多项内容,这时就要用位域来访问一位数据,如下代码所示:

共用体提供了一种机制,使多个变量(共用体中的成员)可以共享同一个内存地址,各成员内存起始地址位置相同,每一瞬间只有一个成员起作用,起作用的成员是最后一次存放的成员。

指针是用来存放变量地址的。通过变量访问变量是直接访问,通过指针访问是间接访问。注意区分指针数组和数组指针,如下图:

用const关键字来修饰指针的几种情况:

引用即是目标的一个别名,操作引用与操作实际的目标对象是相同的。引用的定义格式如下:数据类型&引用名称=目标对象

用typedef关键字可以自定义数据类型,它不是创建一个新的数据类型,而是为已有数据类型创建一个新的名称,使用自定义类型可以提高程序的移植性。语法格式为:typedef 数据类型 新名称 。

5

运算符

异或有很强大的功能,通常用异或运算来实现二进位的反转,也可用来实现两个数的互换。

任何数与0进行按位异或运算,结果为数据本身;

变量与自身按位异或运算,结果为0;

按位异或运算具有交换性,a^b^c=a^c^b=b^a^c;

用异或运算来交换两个数的例子如下:

sizeof()用于返回变量、对象或数据类型的字节长度,在32位系统中,指针的长度为4字节。

END,下篇继续!!!

原创文章,转载请注明来源!

商务合作、赞助请联系作者!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180220G0EP4I00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券