变量之概览
来源:互联网 发布:有文化真可怕知乎 编辑:程序博客网 时间:2024/06/08 06:38
变量
变量在我看来就是某一地址上存储的可以变化的数值
常量在我看来就是某一地址上存储的不可变化的数值(之所以提常量,是因为很多人分不清常量和变量)
变量的分类
变量根据数据类型分类
整型变量
/*定义一个常量*/int i;//定义一个整型变量.如果该语句在全局位置,i为全局变量,默认初始化为0;如果该语句在局部位置,i为局部变量,默认初始化为一个随机的数,至于为什么,参考c文件解析int i1 = 9;//定义初始化一个整型变量
浮点型变量
float f;//定义一个单精度浮点型变量.如果该语句在全局位置,f为全局变量,默认初始化为0.000000;如果该语句在局部位置,f为局部变量,默认初始化为一个随机的数,大概为-0.0000015,至于为什么,参考c文件解析float f1 = 2.0;//定义初始化一个整型变量,也可以初始化为整型常量,然后类型自动转换dobule d;dobule d1 = 3.0;
字符型变量
char c;//定义一个字符型变量.如果该语句在全局位置,c为全局变量,默认初始化为0,注意不是字符'0';如果该语句在局部位置,c为局部变量,默认初始化为-73,不知道为什么.char c1 = 'a';//定义初始化一个整型变量
指针型变量
char * p;//定义一个char * 型指针.该语句会定义一个野指针,就是运行前不知道指向是哪里,运行后是确定的,我们可以通过打印语句打印出来.这样的指针指向的内容不能被直接引用,直接引用指针所指向的内容的话会出现段错误.所以千万千万千万不要这么定义.如果你还不确定指向为哪里,可以写空指针char * p = "hello";//定义初始化一个char * 型指针变量,指针p存储字符串"hello"的首地址char * p = NULL;//定义初始化一个char * 型指针变量,指针p存储的地址为0x00000000;直接引用这个指针所指向的内容仍然会出现段错误.int i = 10;int * p1 = &i;//定义初始化一个int * 型指针变量,指针p存储变量i的地址
枚举型变量
/*方法1,首先,宏声明一个枚举型数据类型,在定义变量*/enum hello{//enum hello为枚举类型名i,//枚举成员是一个int型常量,已经被初始化b};//宏声明一个枚举类型,并不分配内存.enum hello nihao;//定义一个int型变量nihao,分配内存.注意是int型变量./*方法2,宏声明和定义变量放在一起,但是也是按照先宏声明后定义变量的顺序做的*/enum hello{int i;char b;} nihao;
void型变量
void * p; //一般不这么定义,一般定义的时候直接初始化,如第三行int i = 10;void * p1 = (void * )&i; //强制类型转换
数组变量
char c[10];//定义一个数组,大小为10个字节.元素为char型变量.如果该语句在全局位置,为全局变量,所有变量按全局默认初始化方法初始化;如果该语句在局部位置,c为局部变量,每个变量按局部默认初始化方法初始化,至于为什么,参考c文件解析char c1[10] = "hello";//定义初始化一个数组变量
结构体变量
/*方法1,首先,宏声明一个结构体数据类型,在定义变量*/struct hello{//struct hello为结构体类型名int i;//结构体成员char b;};//声明一个结构体类型,并不分配内存.struct hello nihao;//定义一个结构体变量.如果该语句在全局位置,nihao为全局变量,所有变量按默认初始化方法初始化;如果该语句在局部位置,nihao为局部变量,每个变量按局部默认初始化方法初始化,至于为什么,参考c文件解析/*方法2,宏声明和定义变量放在一起,但是也是按照先宏声明后定义变量的顺序做的*/struct hello{int i;char b;} nihao;
- 共用体变量
/*方法1,首先,宏声明一个结构体数据类型,在定义变量*/union hello{//union hello为共用体类型名int i;//共用体成员char b;};//声明一个共用体类型,并不分配内存.union hello nihao;//定义一个结构体变量.如果该语句在全局位置,nihao为全局变量,所有变量按默认初始化方法初始化;如果该语句在局部位置,nihao为局部变量,每个变量按局部默认初始化方法初始化,至于为什么,参考c文件解析/*方法2,宏声明和定义变量放在一起,但是也是按照先宏声明后定义变量的顺序做的*/union hello{int i;char b;} union;
注意
我们关注一个变量的时候会关注以下几点
- 存储空间
- 参考”程序加载后的内存空间分布”与”各数据类型的存储字节数”
- 变量的取值范围
- 这里涉及一个溢出的问题
- 变量的定义及初始化
/*只定义一个整型变量*/int a;//该变量在后续语句可以进行赋值操作,例如 a = 10; 这个语句不是初始化语句,而是赋值语句./*定义一个整型变量并初始化*/int a = 10;
作者声明
- 这篇博客中的变量都是在32位机下的变量.64位机的变量与32位机的变量区别参考”各数据类型的存储字节数”
0 0
- 变量之概览
- WebMVC框架 之 概览
- 【软件工程】 之 全局概览
- 概览C++之const
- 常量之概览
- 数据类型之概览
- 语句之概览
- 函数之概览
- Django之概览
- String和StringBuffer之概览
- WSS3SDK之:SPContentType对象概览
- String和StringBuffer之概览
- ios开发之streams概览
- WPF之XMAL----XMAL概览
- ios开发之streams概览
- iOS编程指南 之 概览
- ios开发之streams概览
- H5B-Html5Builder之1概览
- ZooKeeper 笔记(3) 实战应用之【统一配置管理】
- linux下查看opengl版本
- MyEclipse6.5 自动提示和代码自动补全配置
- sql调优技巧
- MySQL的左连接、右连接、等值连接
- 变量之概览
- C语言古典问题——兔子生兔子
- 关于编译时报implicit-function-declaration(隐式声明)错误的解决方法
- KEIL MDK输出map文件分析
- 回归
- Tomcat学习之启动过程
- Android5.1-s5p6818平台锁屏去除
- Mac mini插入硬盘就断网的解决方法
- CentOS 7.0安装Nvidia驱动