C++语法基础备份

本文详细介绍了C++中的变量定义、初始化和实现,包括变量的内存分配。此外,讲解了各种常量类型,如整数、浮点、字符和符号常量,并探讨了const关键字在常量和指针修饰中的作用。接着,概述了C++的基本数据类型,如整数和浮点类型,并讨论了它们的精度和存储。最后,提到了数组的初始化和常用字符串函数。

C++语法基础备份

1. 变量

(1)变量定义

  只能由字母、数字和下划线组成;数字不可以出现在第一个位置上;C++的关键字(保留字)不可以⽤做标识符

(2)变量初始化

  不能把小数赋值给整数类型变量,例如int a = 3.14是错误的。对变量的初始化要分别进行,比如int a=b=1错误。

(3)变量的实现

  计算机中的操作系统一般会把内存划分成不同区域来存储数据,以便于管理。内存中每个基本存储单元可以存放一个字节的数据,每个字节具有8位,也就是8个比特(bit)。每个内存单元有一个唯一的地址,常用一个16进制数表示和区分。

2. 常量

(1)整数字面量

  没有任何小数或指数部分的数字字面量,与数学中的整数直接关联。

a. 十进制

  直接写出的整数。例如:0,23,-1024。

b. 八进制

  以数字0开头的整数,有效数字为0~7,并且不带有正负号。例如:0126,0163。
  错题:029是八进制数,错误。以0开头为八进制数字,八进制数字中不能出现9。

c. 十六进制

  以0x或0X开头的整数,有效数字为0-9、A-F(a-f),并且不带有正负号。
  例如:0x12a,0xf39

(2)浮点字面量

  是有分数形式或指数形式的数字字面量,与数学中的小数直接关联。

a. 小数形式:由数字和小数点组成

  例如:0.66,30.0,14.15926

b. 指数形式

  在数学中,一个可以用幂的形式来表示的形式。在C语言中,则以e或E后跟一个整数来表示以10为底数的幂数。
  e或E的左侧必须要有数字。e或E的右侧为幂次的数值,必须为整数
上述小数可以等价表示为:6.6E-1,30.0e0,0.01415926E3。

(3)字符字面量

  字符串除了存储所包含的字符外,还额外包含一个结束标志’\0’
‘\0’:结束符; ASCII编码对应数值为0的字符

(4)符号常量

  在C++中,随着程序运算不改变的量叫做符号常量,可以使用const关键字来定义并且初始化。const是⼀个修饰符,例如加在数据类型int的前⾯,用来给这个变量加上一个不变的属性。

A. 初始化

  初始化时也可以将修饰符const与数据类型int调换位置,写成int const kCokePrice = 5。
  定义的时候必须进行初始化,且在初始化之后不能再进行修改与重新赋值。如果试图对常量做修改,例如把它放在赋值符号的左边,就会被编译器发现并指出错误。

B. 修饰谁的问题

  const关键词只能用来修饰常量,错误! 还可以修饰函数,在const成员函数中不能修改任何成员变量,const成员函数不能调用非const成员函数(会发生修改)。

a. 重要!!! const对指针的修饰

  const修饰指针:const离谁近谁不能被修改

int a = 5;
// 第一种
const int *p1;		// p本身不是cosnt的,而p指向的变量是const的
// 第二种
int const *p2;		// p本身不是cosnt的,而p指向的变量是const的


// 第三种
int * const p3;		// p本身是cosnt的,p指向的变量不是const的
// 第四种
const int * const p4;       // p本身是cosnt的,p指向的变量也是const的

*p1  = 3;		// error: assignment of read-only location ‘*p1’
p1 = &a;		// 编译无错误无警告

*p2 = 5;		// error: assignment of read-only location ‘*p2’
p2 = &a;		// 编译无错误无警告

*p3 = 5;		// 编译无错误无警告
p3 = &a;		// error: assignment of read-only variable ‘p3’

p4 = &a;		// error: assignment of read-only variable ‘p4’
*p4 = 5;		// error: assignment of read-only location ‘*p4’

3. 数据类型

  C++中的数据类型分为基本类型和复合类型。其中基本类型包括了整数、浮点数;复合类型是在基本类型的基础上创建的,包括数组、字符串以及结构体等。

(1)基本类型
A. 整数类型

  分为数值整数类型和字符类型。

a. 数值整数

  用来表示没有小数部分的数字。数值整数可以按照占用内存大小分为short、int、long以及long long这四种,占用内存越大的类型能表示的数值范围就更大。同时又可以按照是否表示负值分为有符号版本和无符号版本

  short、int、long以及long long这四种数值整数类型占用的字节数递增,所以能表示的整数范围也递增。

  short类型至少占据2个字节,即16位;一般占用2字节;

  int在现代系统中一般占用4个字节,即32位;类型长度大于等于short类型;

  long类型长度至少占据4个字节,且大于等于int类型;一般占用4个字节;

  long long类型长度至少占据8个字节,且大于等于long类型;一般占用8个字节。

  一个 8 位的内存块,可以表示 2 的 8 次方个不同的组合,也就是说能表示 256 个不同的整数;32 位的int类型,可以表示 2^{32}=42949672962 个不同的整数。

  每个类型数据可以分别指定有符号版本和无符号版本,用来明确该类型是否需要表示负值。

  比如unsigned int就表示无符号的int类型,只能表示正值;
  signed int就表示有符号的int类型,可以表示负值。
  在不指定有无符号时,都默认是有符号版本。
  如果是无符号版本,那么一个8位的内存块可以一一对应到0~255之间的整数;
  如果是有符号版本,那么就会考虑负数,这个8位的内存块可以表示一128~127之间的整数

b. 字符类型

  专门用来存储计算机中的基本符号:英文字母、数字以及标点等。字符串被显示在宽度等于该字符串长度的字段中。

B. 浮点类型

  C++中的浮点数分为三种类型:float、double以及long double,分别表示不同的精度。浮点数的精度在于它可以表示的有效位数以及指数范围。指数范围指的是可以表示的指数幂次大小; 由于浮点数更多的应用是用来表示带小数的数字,所以主要从有效位数的角度讨论精度问题。有效位数用来描述浮点数值的刻画精确程度。
  例如:3.14的有效位数是3位,3.1415926的有效位数是8位。
  Tips: 需要注意的是,有效位数不会因为小数点的改变而改变,无论314000或者3.14000,它们的有效位数都是3位,多出来0可以看作是一种占位符,因为实际有意义的数字只有3个:3、1和4。
  在三种浮点类型中,更大的内存空间可以表示更多的有效位数:
  float类型通常占用4个字节,有效位数为6位。
  double类型占用的空间是float类型的两倍,即8个字节,有效位数为15位。
  long double类型一般占用16个字节的空间。

  操作数为字符或短整形时,系统自动转换成整形。操作数为实型时,系统自动转换成双精度型。当两数操作数类型不同时,将精度低(或表示范围小的)的操作数的数据类型变换到与另一操作数类型相同再进行运算。

a. cout的输出问题

  单纯的cout输出并不具备控制输出格式的选项,不同类型数据的输出格式如下:
  对于char值,如果代表可打印的字符,则将作为一个字符显示在宽度为一个字符的字段中。
  对于整型数值,将以十进制方式显示在一个刚好容纳该数字以及负号(如果有)的字段中。
  浮点类型被显示为6位,末尾的0不显示,最终显示位数与精度无关;浮点数显示,当指数大于6或者小于等于-5时,将使用科学记数法显示;字段宽度恰好容纳数字以及负号(如果有)。

(2)复合类型
A. 数组的初始化

  int b[10]={1,2,3,4,5};的正确理解是前五个元素被依次赋值,后5个元素全部赋值为0。

B. 常用的字符串函数

  strcat(s1, s2) 连接字符串
  strlen(s1) 获取字符串长度
  strcmp(s1, s2)比较字符串的字典序
  strcpy(s1, s2)复制字符串
  string类无法进行-操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值