「这是我参与2022首次更文挑战的第5天,活动详情查看:2022首次更文挑战」
前言
上篇讲了一下C++简要的编译过程,非常有意思,今天就比较枯燥了,学习C++的变量和数据类型,C++的变量是非常复杂的 ,可以看之前写的Golang的文章,golang在第二篇就开始学习变量了,Go语言变量(2)|Go主题月
定义变量
int a; //定义一个int类型的变量
定义多个变量:
int a, b;
也可以直接给它定义时赋值:
int a = 1;
声明
在C++中声明和定义是不一样的东西,声明和定义的看起来作用是一样的,一个变量是是可以即被声明又被定义的,声明的意义就是告诉编译器的,所以声明旨在编译时有用,在实际操作变量时时没有任何作用。通常用在多个文件中使用同一个变量使用,定义可以看作是就是简单的变量赋值操作。所以声明在实际日常代码中很少会看到。
使用extern声明变量:
extern int a;
变量类型
C++的变量给我的印象非常严格,或者可以说非常古老,它每个变量都有指定的类型,类型决定了变量存储控件的大小。编译型语言感觉都类似,C++是区分大小写的,变量的名称和大多数语言一样,由字母、数字和下划线字符组成,必须以字母或下划线开头,也可以只是下划线。
主要类型分为两大类:内置类型和自定义类型,内置类型就是系统自带的常用的整数,字符串,布尔值等等。自定义就是数组,结构体,联合体,枚举类型,自定义类型内容是编程者自定义的内容。
内置类型
举例:
| 基本类型名 | bool | 长度&范围 |
|---|---|---|
| 布尔型 | bool | 1字节 |
| 字符型 | char | 1字节,1-128 到 127 或者 0 到 255 |
| 整型 | int | 4字节,-2147483648 到 2147483647 |
| 浮点型 | float | 4字节,+/- 3.4e +/- 38 (~7 个数字) |
| 双浮点型 | double | 8字节,+/- 1.7e +/- 308 (~15 个数字) |
| 宽字符型 | wchar_t | 2 或 4 个字节,1 个宽字符 |
这些基本的预定义类型还可以使用,signed,unsigned,short,long修饰,代表不同长度,作用是减少内存使用,比如signed表示有符号,意思是可以是正数可以是负数,字节数和unsigned无符号一样,但是表示的范围不一样,short是短,long是长,表示字节数不一样,短的范围小,占用内存少,长的反之,但是不会规定包不包含正负数,根据这四个修饰符可以根据实际情况定义数据类型数据长度。
自定义类型
结构体(struct)
跟Golang一样是由一系列具有有相同类型或者不同类型的数据构成的集合
定义一个结构体:
strcut Person{
int age;
char name;
}
联合体
联合体和机构一样结构体,可以看作一个普通变量形式的结构体,联合体不会和结构体一样每一个成员都分配各自的内存控件,联合体会公用一块内存空间,其中的成员变量地址都是一样的
union Person{
int age;
char name;
}
枚举类型
用于定义一个常量的集合,后面再详细说明。
enum data_num{1,2,3,4};
数组
也是用于定义一组具有相同的数据类型的数据,后面再详细说明。
int data_array[] = {1,2,3,4,5,6};
总结
今天总结了一下基本的变量和数据类型,比较枯燥,数据类型更是复杂,具体用法我们放在后面讲,还有它著名的一些指针的知识和其他高级用法影响了很多语言发展,我们后面慢慢来学习。