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

1. 基本结构

    C++语言由头文件与源文件组成。
    头文件中包含:版权与版本信息,宏定义,函数声明和类的声明。宏定义为是了防止头文件被重复引用。<>引用头文件则直接在系统库中查找头文件;“ ”引用头文件则先在当前工程目录下查找,若工程目录中不存在然后在系统库中查找。
    源文件中包含:版权与版本信息,对头文件的引用,系统功能代码的实现。用ifndef/define/endif结构产生预处理的宏定义块。
    类成员函数可以在类声明中被定义,并且自动生成内联函数,这虽然会使书写方便,但会造成风格上的不一致,因此建议头文件中只存放声明而不定义。

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

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<枚举类型名>{常量1,常量2,…},定义枚举类型时可以为各常量提供一个整数值,默认情况第一个数为0,没有定义的值应为前一个值加1。在定义函数时将函数参数设置为枚举类型,这样可以限制调用函数必须提供枚举类型中的某个常量,而不能随意输入一个整数。

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

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

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

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

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

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

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

5.运算符

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

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

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

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

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

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

 

=========================================

本文到此结束!

如果对你有帮助,请随手 点赞 或 赞赏

欢迎关注、私信、交流,一起学习,一起进步!

==========================================

 

 

 

  • 15
    点赞
  • 90
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

huixieqingchun

钟意作者

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值