【24.1.15笔记】C++ Primer 自学 Day 11

本文介绍了C++中的布尔类型、枚举类型以及数组类型,包括它们的定义、隐式转换规则和使用方法,强调了枚举类型的限制和数组初始化的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

三、C++数据类型

7、布尔类型

        bool类型的值可以赋予文字true和false。

        bool类型虽然能够隐式转换为1和0用来表示true和false,但是不能够显式声明:

short bool found = false; //错误

        当然,算术值和指针也能够隐式转换成bool类型【0和空指针是false,其他值是true】。

8、枚举类型

        枚举类型存在的意义:限定函数传递参数的值就在枚举类型的范围里面。

        枚举类型的定义【它定义了整型常量并把它们组成了一个集合】:

enum open_modes{ input = 1, output, append };

        枚举类型的定义可以和类的定义有点相似,可以看成是类但是没有方法,只有成员,而且成员是整型常量。【个人理解】在缺省状态下,枚举对象中第一个成员被赋值为0,后面的成员依次加一,

        枚举类型使用方法:

void open_file( string file_name, open_modes om );
open_file( "Phoenix and the Crane", append );//我们只能传递枚举的名字,但是不能传递代表它的整数值

         枚举对象可以和类一样被声明,在初始化时,只能够赋予其中一种状态,不能够给多种状态,也一定是在枚举类型的范围里面的值,要用名字初始化:

open_modes om = input; 
// ... 
om = append;//om不能被打印出它代表的类型的名字

        C++也不支持使用枚举成员进行迭代遍历,因为它不支持在枚举成员之间的前后移动:

// 不支持
for ( open_modes iter = input; iter != append; ++iter ) 
 // ...

        枚举类型在使用时,可以被自动提升为算术值:

const int array_size = 1024; 
// ok: pt2w 被提升成 int 类型
int chunk_size = array_size * pt2w;

9、数组类型

        数组是单一数据类型对象的集合体,可以通过下标访问。

        数组的定义由类型名、标识符和维数组成。

int ia[10];

        数组的维数必须是常量,变量不能够用来指定数组的大小。【必须是const变量才行,如果使用函数返回的值也一定要用const】

        数组访问的索引从0开始。

        数组的显式初始化:

const int array_size = 5; 
int ia[ array_size ] = { 0, 1, 2 };//系统分配5给数组,没有被显式初始化的值是0
int ia[] = { 0, 1, 2 };// 系统自动分配空间,最大是3

        字符数组的初始化【两种方式】:

const char ca1[] = { 'C', '+', '+' }; 
const char ca2[] = "C++";

        第一种方式和第二种方式虽然都定义了C++这三个字符,但是第二个数组的长度比第一个数组长一,因为第二种方式定义时蕴含了一个隐藏的终止符。

        数组之间不能互相初始化和赋值,也不能引用一个数组。【数组不能成块操作】

        二维数组的初始化,使用逗号和大括号:

int ia[ 4 ][ 3 ] = { 
 { 0, 1, 2 }, 
 { 3, 4, 5 }, 
 { 6, 7, 8 }, 
 { 9, 10, 11 } 
}
int ia[4][3] = { 0,1,2,3,4,5,6,7,8,9,10,11 };
int ia[ 4 ][ 3 ] = { {0}, {3}, {6}, {9} };// 这种方式定义了每一行第一个元素,以逗号分割
int ia[ 4 ][ 3 ] = { 0, 3, 6, 9 };// 这种方式定义了第一行和第二行第一列的元素

        ia[ 1, 2 ] 这个表达式虽然是正确的,但是并没有创建一个二维的数组。

        数组的名字代表了这个数组的首地址,相当于指针类型,可以用下标操作符取址访问数组的第n个元素的地址。&a[n]

        因为数组的名字相当于数组的首地址的指针,所以对于指针的运算也可以用在数组的名字上:

ia+1;
*(ia+1); 
ia[1];

        上面第二个一定要先加括号,不然表达式的意思为第一个元素加一。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值