变量的本质

在C语言中,为我们抽象出了一个概念,叫做变量,从字面意思理解是一种变化的量.
因为我们有了汇编语言的基础,从这个角度理解,可以直接把变量理解成某个内存地址.

从变量里面拿东西,可以理解成是从某个内存地址里面读数据.
往变量里面放东西,可以理解成是往某个内存地址里面写数据.

这便是变量的本质.
有了汇编语言的基础,无论什么概念,我们都比较容易理解,一点即通.

char = byte
short int = word
int =double word



变量名的命名规则和函数的命名规则是一样的.
1.只能以字母、数字、下划线组成,且第一个开头的必须是字母或者下划线.
2.区分大小写.
3.不能使用C语言的关键字.

但值得注意的是,因为VS2015的强大,我们可以使用中文来作为变量名和函数名.
如果使用GCC编译器或者使用VC6.0,中文变量名或者函数名就无法编译通过.

int age;
int main() {
__asm {
xor eax, eax
}
age = 5;
}


声明了一个变量,长度为4个字节,并且这个变量不在任何函数的范围之内.
在C语言中,这种独立于任何函数体之外的变量,叫做全局变量.



全局变量的特点是:
1.在程序编译的时候,就确定了变量的内存地址和长度.
2.如果不重写编译,全局变量的内存地址不变.游戏外挂中的找"基址",其实就是找全局变量.
3.这个程序中所
有的代码,都可以读写全局变量区.




而局部变量则位于栈中:
1.局部变量是函数内部申请的,如果函数没有被调用.局部变量没有内存空间.
2.局部变量是在内存的栈中分配的,程序执行时才分配.所以局部变量的内存地址不固定.
3.因为局部变量的内存地址不固定.所以只能在函数内部使用,其他函数不能使用.



不管是函数名还是变量名以及我们将来要学习到的结构体,指针,类名等,最终都会转换成内存地址.



全局变量的默认值是0
局部变量使用的时候,要给一个初值.

原文地址:https://www.cnblogs.com/xiaodaxiaonao/p/7422605.html