C++数据的一些注意事项

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值