免费x网站域名,sina app engine wordpress,惠州模板做网站,网站建站哪家公司好1 不同类型
1.1 静态变量
分类#xff1a;
分为静态全局变量和静态局部变量
作用域#xff1a;
需要注意静态全局变量也仅仅是在本文件中可用#xff0c;除非加extern关键字。
内存分配位置
在全局区分配空间#xff0c;初始值为0。
1.2 局部非静态变量
内存分配位…1 不同类型
1.1 静态变量
分类
分为静态全局变量和静态局部变量
作用域
需要注意静态全局变量也仅仅是在本文件中可用除非加extern关键字。
内存分配位置
在全局区分配空间初始值为0。
1.2 局部非静态变量
内存分配位置
内存分配在栈空间栈空间初始值为随机值。
作用域
作用域为当前块大括号中
1.3 常量
1.3.1 宏常量
通常定义在文件头部
语法
#define 加常量名加常量值 不可修改
1.3.2 const
语法
const 常量类型 常量名 常量值 不可更改
1.3.3 const和define的区别
编译器处理方式不同
对于#define, 编译器会在预处理阶段把所有宏替换成所定义的东西, 并不是给其分配内存.
类型和安全检查不同
#define仅仅作替换, 不会做类型检查. 而const定义的常量有具体的数据类型, 编译阶段也会进行类型检查.
存储方式不同
#define定义的宏在每次使用的过程中都会进行一次替换, 且每次替换都会重新分配一次内存, const定义的常量会在内存中分配内存.
const节省空间
如以下例子:
#define PI 3.14159 //常量宏
const doulbe Pi 3.14159; //此时并未将Pi放入ROM中 ......
double i Pi; //此时为Pi分配内存以后不再分配
double I PI; //编译期间进行宏替换分配内存
double j Pi; //没有内存分配
double J PI; //再进行宏替换又一次分配内存
const效率更高宏替换只作替换不做计算不做表达式求解
2 数据类型
2.1 sizeof关键字
用法
sizeof数据类型/变量返回所占字节数。
2.2 实型浮点型
2.2.1 float单精度
占4字节 7位有效数字 声明float型最好在值后面加f如float f1 3.14f 如果不加 编译器会默认其是double型 然后再转换成float
2.2.2 double双精度
占8字节 15-16位有效数字
2.2.3 printf打印
比如在printf中打印实型变量
%-30.4f
其中“-”表示左对齐 “30”表示至少要有三十个字符的长度“.4”表示精确度保留小数4位f表示实型。如果存在“e”表示用科学计数法打印。
2.3 字符型
表示单个字符的变量类型 一定要用单引号表示一个字符 如char ch ‘a’而不可以为char ch ‘abc’也不可以为char ch “a”。
2.4 字符串
C风格字符串 char 变量名[] 字符串值C风格字符串 string 变量名 字符串值
2.5 数组
初始化
如果数组未全部初始化剩下的数默认为0注意数组名为常量类型不可以赋值.
数组名称用途
可以获取数组首地址可以统计数组占用内存可以用于数组长度求解, sizeof(数组名) / sizeof(数组名[0])可以算出数组元素个数, 但是要注意, 数组名作为参数传递到另一个函数中的形参时, 会退化为指向数组首地址的指针.
二维数组
初始化可以省略行数不写行数的前提是不能只有一个声明比如int a[][4];必须直接给数组赋值比如int a[][4] {1, 2, 3, 4, 5, 6, 7, 8}这样默认就是一个a[2][4]但是不能省略列数
2.6 枚举
2.6.1 enum
2.6.2 enum class