20170128C语言提升01_数据本质和static和生命周期和作用域
2017-01-28 14:23
357 查看
数据类型:
数据类型其实并不是数据类型,他其实是有一个坑。他可以理解为固定内存大小的一种别名。它是一种模版,它的作用就是规定大小和定位,并不是char类型不可以装数值,不是int不可以表示字符,数据类型的初衷是定义了一种模版,最重要的就是其大小,可以用运算符sizeof()来计算。变量名的本质:
就是内存地址的别名,可以使用别名来访问内存。#define ULONG unsigned long typedef unsigned int UINT; typedef char* string;//可以让我们更好的理解程序,是程序的表现形式多样化。本质是没有发生改变的。 typedef enum SHOW_STYLE { SHOW_STYLE1, SHOW_STYLE2 }STYLE;//后面使用这个枚举可以直接使用STYLE来定义。
变量属性:
auto:编译器默认局部变量的分配方式就是auto类型,定义前面默认加了auto的,他表示在栈里面分配空间,他与C++11里面的类型自动推导不是一个。全局变量是存储在全局变量区里面,不应该存储在栈里面,只有局部变量可以加这个。static:存储在程序静态区里面,程序静态区的生命周期和全局变量一样,但是作用域不一样。他只会被初始化一次。在其他文件定义的全局变量加上static的话,就会导致只能在原来的文件里面访问到那个变量,不可以使用extern定义然后再其他文件里面来访问。static会讲全局变量的作用域限定在当前文件里面。static修饰函数的话也是将函数的作用域限定在本文件里面。可以使我们的程序更加的模块化。静态的局部变量是可以被返回出去的,但是要注意,如果返回出去的数据是char*类型,就不建议这样返回,不应该返回可变的,不符合语义。他的作用应该是控制作用域。
作用:1:改变存储位置,从栈改变到静态区,生命周期改变了。2:修饰全局变量
c043
以及函数,使他们降级,作用域限定在本文件。
register:是变量存储在寄存器,这样访问速度会非常快。这个操作不一定成功,他会由编译器来决定,和C++的inline有点类似。加上register后,不可以对这个变量进行取地址操作。全局变量也不可以使用这个来修饰。
作用域,生命周期:
作用域是语法层次上来说得,C语言会以一个大括号决定作用域,不一定在if或者for里面,直接一个空括号里面申请的变量的作用域也仅仅在括号内。但生命周期是整个函数内。生命周期是地址存在的时间。相关文章推荐
- 20170128C语言提升01_数据本质和static和生命周期和作用域
- 20170128C语言提升01_数据本质和static和生命周期和作用域
- 20170128C语言提升01_数据本质和static和生命周期和作用域
- 20170128C语言提升01_数据本质和static和生命周期和作用域
- 20170128C语言提升01_数据本质和static和生命周期和作用域
- 20170128C语言提升01_数据本质和static和生命周期和作用域
- 20170128C语言提升01_数据本质和static和生命周期和作用域
- 20170128C语言提升01_数据本质和static和生命周期和作用域
- PoEdu--------------数据的本质、static、生命周期和作用域
- static 常量区 数据区 堆栈 生命周期 作用域 c++ 以及脚本语言的区别
- c语言009---作用域,生命周期,内存数据存储
- Poedu_C语言提升_Lesson01_20161108_数据类型
- 如果你也面试01-C语言中static的作用
- C语言中数据的两种属性及static的作用
- C语言中static的作用
- 【C语言】20-static和extern关键字2-对变量的作用
- C语言中static关键字作用
- C语言中static的作用总结
- C语言中static的作用总结
- “大数据”的本质是互联网智商的提升