Poedu_C语言提升_Lesson01_20161108_数据类型
来源:互联网 发布:管易软件多少钱 编辑:程序博客网 时间:2024/06/07 03:57
数据类型
1.数据类型并不是数据类型,不要掉进这个坑。它只是用来规定大小以及定位。在汇编中,只能操作一种数据单位——byte。数据类型直接定义了一套模板,规定了大小,让我们不用一个个的byte去做。
2.sizeof是一个操作符,用来得到数据类型的本质——多少byte
变量名本质:内存地址的别名,可以使用别名访问内存
- 3.表示方式
- 基础数据类型:
如int、char、double等,在前面博客中有详细讲述,此处不再赘述
- 自定义数据类型:
typedef:给一个变量类型绑定一个别称
typedef 原类型 别名;
如:typedef unsigned long UINT;
需要分号,define是直接展开,是编译器层面做的这件事情,不用加分号 。
typedef和define的顺序是相反的,上面的例子如果用define,则应该是#define UINT unsigned long
typedef在函数指针的时候的作用会显得更加强大
自定义类型更容易理解语义 - 4.使用方式
- 格式
类型 变量名;
- 属性
atuo:
在栈中分配数据,所以局部变量中的类型都默认是auto,有auto的都是分配在栈中。
static:只在作用域内才可操作,能够变化的常量
如果用auto定义一个全局函数,编译器会因矛盾而报错作用
1.保存一个静态区内存
存储在程序的静态区,它的生命周期和全局函数差不多,但是作用域不同,只初始化一次(再次调用函数,碰到初始化的时候会忽略),看个例子:
2.限制作用域(包括用static定义的变量和函数)在局部函数中被static定义的变量,只有在这个局部函数中才能进行修改
在.c中定义的static函数只能在这个.c中文件进行调用int Try()
{
static int count=0;
count++;
return count;
}
int main()
{
for(int i=0;i<10;i++)
Try();
return 0;
}
代码中,我在Try这个函数内,定义了一个static的变量count,我在main函数中进行了10次循环调用,那么最后count的值是多少呢?
答案是10。
如果将代码改成这样呢:
int Try()
{
int count=0;
count++;
return count;
}
int main()
{
for(int i=0;i<10;i++)
Try();
return 0;
}
现在答案是多少呢?
在return count那下断点,count是1,如果执行完Try再看,count已经被销毁了
两段代码的差别,就是在static上,在第一次调用count时,进行了初始化的操作。如果这个变量是static的,那么之后再调用n次也不会再进行int count=0这个操作。如果不是,则是每次调用,每次初始化为0。
也就是在一次调用过后,这个变量count的的值就存在了,且会一直存在,是不是有点像全局变量?所以说它的生命周期和全局函数差不多。但是,这个局部函数中的static变量不能被外部函数访问,只能被自已访问,这就是和全局变量的区别。
register
用法
register int num=0;
for(;num<10000;num++);作用
将num存储于寄存器中:寄存器中的对数据的操作速度很快
注意:(1)寄存器中没有地址,内存中才有
(2)必须是单个寄存器能够接受的值:操作系统是64位,能够接受的是64位;32的程序,只能是32位的
(3)仅仅请求,不一定成功
(4)不能用于全局,编译器会矛盾extern
用法
extern int num;
作用
在其它文件中定义了,如果本文件中没有,编译器就会在其它文件中找。但是不安全。
- 5.生命周期
当前地址存在的时间
比如我们常说的全局变量,它的生命周期和程序此次运行的时间是相等的。程序退出时,全局变量才会销毁。而局部变量的生命周期,看情况而定,因为我们上面讲了一个static…
0 0
- Poedu_C语言提升_Lesson01_20161108_数据类型
- Poedu_C语言提升_Lesson02_20161111_数据类型2
- Poedu_C语言提升_Lesson03_20161117_数据类型3
- Poedu_C语言提升_Lesson04_符号
- Poedu_C语言_lesson11_20160911_char类型
- Poedu_C语言_lesson12_20160911_小数
- Poedu_C语言_20160912_复习
- Poedu_C语言_lesson13_20160912_字符串
- Poedu_C语言_lesson15_20160914_printf详解
- Poedu_C语言_lesson14_20160913_常量
- Poedu_C语言_lesson16_20160916_scanf详解
- Poedu_C语言_lesson19_20160920_循环
- Poedu_C语言_lesson09_20160908_编程概述
- Poedu_C语言_lesson10_20160909_整数类型
- Poedu_C语言_Lesson20_20160923_分支语句
- Poedu_C语言_Lesson21_20160924_函数1
- Poedu_C语言_lesson22_20160927_函数2
- Poedu_C语言_lesson23_20160928_函数3
- web前端之JavaScript高级程序设计五:客户端检测
- 谈谈数据库的ACID
- 信号的生命周期
- Inspector视图中脚本前面的勾选框消失或者自动取消的解决办法
- awesome-react-native
- Poedu_C语言提升_Lesson01_20161108_数据类型
- 使用readline模块如何实现Node.js的输入输出?
- 遇到的一个网页排版问题
- Matlab 利用参数方程绘制空心球体
- Unity中使用WebView
- 数据结构总结
- Mongodb--基本概念
- 案例二———百度地图上定位自己的位置
- mysql 自带时间函数date_format和str_to_date使用总结