这是我参与11月更文挑战的第4天,活动详情查看:2021最后一次更文挑战
更多类型
Array与String
除了基本类型以外,其他的类型被称为Compound Types,即由其他类型构建的类型。
对于Array,C++的数组类型要求数组所有元素类型相同(可为float,int等),其声明语义如下:typeName arrayName[arraySize];
一些数组操作的细节:
int test[3] {1,2,3}
int copy[3] \\
copy = test \\无效操作
int zeros[100] {0} \\初始化一个全零数组
unsigned int counts[10] = {}; \\C++11 后初始化一个全零数组
String与Array都可以用来表示字符串类型,如char str[6] = 'newbee'这样的语句可以用来初始化一个字符串,String与简单使用字符串数组的区别是需要引入<string>头文件,同时支持更灵活的操作:
string str1;
str2 = "C++";
str1 = str2; \\有效操作,属于对象赋值
str3 = str1 + str2;
str1 += str2; \\字符串拼接
struct
稍对C语言有所了解的人都知道结构体(即Struct)的存在,结构体的声明也很简单:
struct inflatable
{
char name[20];
float volume;
double price;
};
inflatable guest =
{
"Glorious Gloria", // name
1.88, // volume
29.99 // price
}
可以看到,结构体的使用类似于Typescript中的interface(这样说可能有点奇怪,毕竟Typescript才是学生)
union
union one4all {
int int_val;
long long_val;
double double_val;
};
Union长得像Struct,但是特性不同,上面的这个union可以储存int,long,double三种类型的数据,但是每次只能储存一种,后面的赋值会“挤掉”前面的值,属于学一个忘一个。
enum
又是一个在Typescript里见过的类型,直接上点代码,方便理解这个类型
enum bits{one = 1, two = 2, four = 4, eight = 8};
enum bigstep{first, second = 100, third};
\\等同于enum bigstep{first=0, second = 100, third=101};
enum意为enumerate,顾名思义,结合上面的代码所示,在不明确初始化enum元素的时候,其元素根据前面地元素自增。enum在C++中的作用主要是将一些带有意义的数字更有语义地表达,增强可读性。