2.C++基础知识(变量、数据类型、string类、引用、运算符)

2.C++基础知识

2.1变量、常量和赋值

变量

  • C++也使用变量的编程构造来命名和储存数据,变量容纳的数据成为这个变量的
  • 编译器将内存位置分配给程序的每一个变量名,我们可以简单的认为内存位置就是用变量名做标签
  • 变量(或者在程序中定义的其他项目)的名称叫标识符,标识符必须字母或下划线开头,后续每个字符只能是字母、数字、或下划线
  • 计算机用不同的编码方式编码不同类型变量,声明变量就是告诉编译器两点,一、应该给一个变量分配多大的内存空间,二、用哪种编码方式将变量的值表示成一串0和1

常量

常量是固定值,在程序执行期间不会改变

  • 整数常量:整数常量可以是十进制、八进制或十六进制的常量。前缀指定基数:0x 或 0X 表示十六进制,0 表示八进制,不带前缀则默认表示十进制
  • 浮点常量:浮点常量由整数部分、小数点、小数部分和指数部分组成。
  • 布尔常量:由两个标准的C++关键字组成,true和false
  • 字符常量:由单引号括住的字符,如'a','b',还有转义字符序列'\n','\t'等等
  • 字符串常量:由双引号括住,如:"hello"等等
  • 定义常量方法:两种方法1.使用#define预处理器 2.使用const关键字

修饰符类型

  • signed
  • unsigned
  • long
  • short
  • const

赋值语句

C++中还有一种不同的初始化语法,称为“构造函数语法”
例:

double rate(0.07),time,balance(0.0);

这是因为:以运算符(=)进行初始化这个操作系衍袭自C语言。如果对象属于内建型别,或者对象可以单一值加以初始化,这种方式就没有问题,例如:

string name = “Fibonacci”;

但是对象需要多个初始值,这种方式就没办法完成任务了。以标准库中的复数(complex number)类为例,它需要两个初始值,一个是实部,一个是虚部。以下就是用来处理“多值初始化”的构造函数初始化语法:

#include <complex>
complex<double> purei(0, 7);

小数点后位数控制

cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(2);

图例为保留两位小数,改变(2)的数字即可改变小数位数

2.2输入和输出

输入流是提供计算机并有程序使用的一系列输入。“流”表明程序将以相同的方式处理所有输入,无论这些输入从何而来。输出流同样如此,是程序生成的一系列输出。

  • <<符号是插入运算符

    using namespace std;
    特定的using指令表明程序准备会用std命名空间。命名空间不是一个名称集合,它代表了一个C++代码主体,其中指定了某些名称的含义,命名空间的作用是将所有C++名称规范划分成不同的集合(称为命名空间),使用命名空间的每一个名称都有一个“规范”(一个定义),命名空间对名称进行划分,但和那些命名空间配合的还有大量的C++代码

2.3 数据类型

基本内置类型

类型 关键字
布尔型 bool
字符型 char
整型 int
浮点型 float
双浮点型 double
无类型 void
宽字符型 wchar_t

C++也允许定义其他类型的变量,比如枚举、指针、数组、引用、数据结构、类等等

typedef声明

可以使用typedef为一个已有的累死你个去一个新的名字,例如下面语句会告诉编译器,feet是int的另一个名称:

typedef int feet;

枚举类型

枚举类型:枚举类型(enumeration)是 C++ 中的一种派生数据类型,它是由用户定义的若干枚举常量的集合。
定义格式:

enum <类型名> {<枚举常量表>};

应用举例:

enum color_set1 {RED, BLUE, WHITE, BLACK}; // 定义枚举类型color_set1
enum week {Sun, Mon, Tue, Wed, Thu, Fri, Sat}; // 定义枚举类型week

enum Weekday{SUN,MON,TUE,WED,THU,FRI,SAT};//定义枚举类型weekday
 //SUN=0,MON=1,依次为0,1,2,3.....

sring类

C++缺乏原生数据类型来直接操作字符串,但在string类的帮助下,可以声明一个string类型的变量来进行操作
用cin将数据读入字符串,在两个字符串之间可以用“+”符号可将两个字符串连接成一个更长的。
例如:

string day,day1,day2;
day1="Monday";
day2="Tuesday";
day=day1+day2;

会连接成以下字符串:

"MondayTuesday"

array(数组)和vector(向量)

  • 要定义array,我们必须指定array的尺度大小——即array所能储存的元素个数。array的尺度必须是一个常量表达式,也就是一个不需要再执行期计算其值的表达式。例如:

    int pell_seq[18];

  • 至于定义vector object,我们首先必须含入vector头文件。vector是个class template(类模板),所以我们必须在类名称之后的角括号内指定其元素型别,其尺度则写在小括号中:此处所给出的尺度并不一定得是个常量表达式例如:

    include <vector>

    vector<int> pell_seq(seq_size);

引用

引用是隐式的指针,引用就是给一个变量起一个别名,格式为 数据类型 & 引用名 = 变量名;
这里的&并不是取地址符号,而是起标识作用,引用声明之后,相当于目标变量有两个名称

int a = 10;
int &b = a;

对a与b进行操作,都会改变内存中的数据。

注意

  1. 引用在定义时必须初始化,如int &b;语句是错误的
  2. 引用在初始是只能绑定左值,不能绑定常量,如int &b = 10;是错误的
  3. 引用一旦初始化,其值就不能更改,即不能再做别的变量的引用
  4. 数组不能定义引用,因为数组是一组数据,不能定义其别名

指针与引用的区别
指针是一种数据类型而引用不是,指针可以转换为它所指向的变量的数据类型,如下:

int a = 10;
int *p = &a;
double *pd = (double*)p;

经过转换,pd指针就可以指向double类型数据,而引用则必须要和目标变量的数据类型相同,无法进行数据类型转换。

2.4运算符

算数运算符

+、-、*、/、%、++、--

关系运算符

==、!=、>、<、>=、<=

逻辑运算符

&&、||、!

位运算符

&、|、^的真值表:

p q p&q plq p^q
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1

赋值运算符

=、+=、-=、*=、/=、%=

杂项运算符

运算符 描述
sizeof sizeof 运算符返回变量的大小。例如,sizeof(a) 将返回 4,其中 a 是整数。
Condition ? X : Y 条件运算符。如果 Condition 为真 ? 则值为 X : 否则值为 Y。
, 逗号运算符会顺序执行一系列运算。整个逗号表达式的值是以逗号分隔的列表中的最后一个表达式的值。
. (点)和 ->(箭头) 成员运算符用于引用类、结构和共用体的成员。
Cast 强制转换运算符把一种数据类型转换为另一种数据类型。例如,int(2.2000) 将返回 2。
& 指针运算符 & 返回变量的地址。例如 &a; 将给出变量的实际地址。
* 指针运算符 * 指向一个变量。例如,*var; 将指向变量 var。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容