从零开始学习C++(五.C++变量&数据类型)

183 阅读3分钟

「这是我参与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长度&范围
布尔型bool1字节
字符型char1字节,1-128 到 127 或者 0 到 255
整型int4字节,-2147483648 到 2147483647
浮点型float4字节,+/- 3.4e +/- 38 (~7 个数字)
双浮点型double8字节,+/- 1.7e +/- 308 (~15 个数字)
宽字符型wchar_t2 或 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};

总结

今天总结了一下基本的变量和数据类型,比较枯燥,数据类型更是复杂,具体用法我们放在后面讲,还有它著名的一些指针的知识和其他高级用法影响了很多语言发展,我们后面慢慢来学习。