数据类型及变量
2016-07-11 16:32
281 查看
1、什么叫做变量?什么叫做常量?
变量:在其值的作用域内可以改变的量。一个变量应该有一个名字,在内存占据一定的存储空间。
常量:其值不可以改变的量。
2、变量的三大特点
a.变量的数据类型:主要说明变量占用内存空间的大小如int型。
b.变量的作用域:变量的有效性的范围。
c.变量的存储类型:变量在内存中的存储方式。不同的存储方式影响变量在内存的生存周期。
3、区分变量的声明和定义
定义:创建一个变量,为其分配内存空间,并为它取变量名,一个变量只能定义一次。
声明:告知编译器这个变量名已经匹配在一块内存上了,但是并未为其分配内存,可以多次声明变量。
a. 定义性声明:需要建立存储空间。例如:int a在定义时就已经建立了存储空间。
b. 引用性声明:不需要建立存储空间。例如:extern int a其中变量a是在别的文件中定义的。
4、数据类型大小
字节大小是由编译器决定的,可以利用sizeof()可以测得每种类型分配的字节大小。我这里用的是Linux虚拟机下的gcc编译器,测得的结果如下所示:
5、右左法则
右左法则:从最内部的括号(变量)开始阅读声明,先向右看,再向左看,碰到一个括号时调转阅读方向,括号内的内容阅读完毕则跳出括号,直到全部阅读结束为止。
例如:
(1)int a; a是整型变量。
(2)int *a; a是整型指针变量。
(3)int **a; a是整型指针的指针变量。
(4)int *a[10]; a是整型指针数组,数组里面存放着整型指针。
(5)char (*a)(int); a是一个函数指针变量,指针变量指向一个形参为int型,返回值为char型的函数。
(6)int (*a[10])(int); a是一个指针数组,该指针指向一个形参为int型,返回值为int型的函数
(7)int *(* (*a) (int))[10]; a是一个函数指针变量,该函数是一个形参为int型,返回值为数组指针的函数,该数组指针指向整型指针
(8)void *(*a)(char ,int (* )( )); a是一个函数指针变量,该指针指向一个形参为char,另一形参为函数指针变量,空返回值为void *型的函数,参数函数的形参为空,返回值为整型的函数。
(9)int *( *( *a[5])( ))( ); a是一个函数指针数组,该函数形参为空,返回值为指向函数指针的整型指针。
变量:在其值的作用域内可以改变的量。一个变量应该有一个名字,在内存占据一定的存储空间。
常量:其值不可以改变的量。
2、变量的三大特点
a.变量的数据类型:主要说明变量占用内存空间的大小如int型。
b.变量的作用域:变量的有效性的范围。
c.变量的存储类型:变量在内存中的存储方式。不同的存储方式影响变量在内存的生存周期。
3、区分变量的声明和定义
定义:创建一个变量,为其分配内存空间,并为它取变量名,一个变量只能定义一次。
声明:告知编译器这个变量名已经匹配在一块内存上了,但是并未为其分配内存,可以多次声明变量。
int a; extern int a;变量声明和定义的两种情况:
a. 定义性声明:需要建立存储空间。例如:int a在定义时就已经建立了存储空间。
b. 引用性声明:不需要建立存储空间。例如:extern int a其中变量a是在别的文件中定义的。
4、数据类型大小
字节大小是由编译器决定的,可以利用sizeof()可以测得每种类型分配的字节大小。我这里用的是Linux虚拟机下的gcc编译器,测得的结果如下所示:
sizeof(char) = 1 sizeof(short) = 2sizeof(int) = 4sizeof(long) = 4sizeof(float) = 4sizeof(double) = 8当对于指针取大小的时候,却发现它的值为4,这是为什么呢?结果如下:
sizeof(char *) = 4原来是因为指针里面存放的是地址,而地址的大小是固定的,由操作系统的位数决定。不同的操作系统,地址长度不同,指针的大小也就不同。我这里使用的是32位机,所以指针的大小占了4个字节。
5、右左法则
右左法则:从最内部的括号(变量)开始阅读声明,先向右看,再向左看,碰到一个括号时调转阅读方向,括号内的内容阅读完毕则跳出括号,直到全部阅读结束为止。
例如:
(1)int a; a是整型变量。
(2)int *a; a是整型指针变量。
(3)int **a; a是整型指针的指针变量。
(4)int *a[10]; a是整型指针数组,数组里面存放着整型指针。
(5)char (*a)(int); a是一个函数指针变量,指针变量指向一个形参为int型,返回值为char型的函数。
(6)int (*a[10])(int); a是一个指针数组,该指针指向一个形参为int型,返回值为int型的函数
(7)int *(* (*a) (int))[10]; a是一个函数指针变量,该函数是一个形参为int型,返回值为数组指针的函数,该数组指针指向整型指针
(8)void *(*a)(char ,int (* )( )); a是一个函数指针变量,该指针指向一个形参为char,另一形参为函数指针变量,空返回值为void *型的函数,参数函数的形参为空,返回值为整型的函数。
(9)int *( *( *a[5])( ))( ); a是一个函数指针数组,该函数形参为空,返回值为指向函数指针的整型指针。
相关文章推荐
- MySQL中的integer 数据类型
- MySQL 数据类型
- 详解易语言中的数据类型
- 零基础易语言入门教程(五)之逻辑型数据类型
- 零基础易语言入门教程(四)之数据类型
- PostgreSQL教程(四):数据类型详解
- Lua学习笔记之数据类型
- 实现Lua中数据类型的源码分享
- Lua数据类型介绍
- SQL 研究 相似的数据类型
- 详解SQLite中的数据类型
- PowerShell中使用GetType获取变量数据类型
- c# 数据类型占用的字节数介绍
- C#难点逐个击破(6):C#数据类型与.net framework数据类型
- C#、ASP.NET通用工具类IsWhat?(可以判断数字、身份证、数据类型等等)
- MySQL学习第六天 学习MySQL基本数据类型
- MySQL数据类型和常用字段属性总结
- sql server 常用的几个数据类型
- C++学习小结之数据类型及转换方式
- C++编程中的数据类型和常量学习教程