[分享]变量的小论和指针使用时注意的问题
先说明以下变量的储存方式:一般的变量都存放在内存中,而内存对变量的声明又归类为栈和堆.
所谓栈解释为客栈,来人可以流动,你方唱罢我登场,即变量一旦使用完毕,就离开地方,释放房间给下个人来住.所以储存动态变量.
所谓堆可解释为死人堆...

所以就决定了变量的储存方式:1.动态存储方式. 2.静态存储方式.
对于动态存储方式,本人认为他是一个很常用但又受到不公平待遇的一个东东.为什么呢?因为系统在编译好后再运行时才给他三分地,即才给他分配空间,进行存储.而它本身又分为1,自动(局部)变量auto.2,register寄存变量.
其中,这个autu(局部)类型更是一个受气包,干得多吃的少,系统对他太不公平啦!因为他auto所以他就受到限制---局部变量.就是在他有用是就给他点好处(分配空间),没用是就陪赶出来,而且大多不会反抗,不愧是受虐行人才

上边说大多数动态变量是专业的受虐行人才,也就是说还有些是会反抗地,解决和你内存做斗争!!没有枪没有炮我们自己造......于是,就发生变异啦---regiser寄存变量登上了历史舞台.寄存就是在其他的地方寄存,而这个地方就是CPU中的寄存器,所以它叫regiser,入乡随俗没办法.
因为这些变量离CPU太近了所以运算交换数据时是很快地,所以一般存放的是循环变量.但由于CPU空间有限,所以也有他的弱点!!---就是类型受到限制,个数也有限(要是无限早就奔腾N了还M?).最后再说下,说这些rejister是变异,其实是他们受排挤,地方不够才来这的,物极必反嘛.

由此可见动态变量一般都是自动局部变量,但register也不可忽视,因为考试要考的

相比之下,静态变量就NB多了,在我们编译时系统就给他分配了180平米的大房子,而且他们还自动有小妾陪伴---自动赋予初值(一般是0).静态变量又分为1,局部静态变量static和2,全局变量.
对于局部静态变量其实他爹也是动态变量,只不过读了两年书,会几个洋文就NB了,叫什么Mr static.小样

而对于全局变量那就是相当的有才了,他不做任何说明都为静态变量,其前边可以加static,但只是来限制其使用范围而已,因为很nb,所以就nb(还可以加extern,让他更NB,不过太NB也不行,最好不要用必杀......)
-----------------------------------------------------------------------------------------------------------------------------------
下边说指针使用是几个注意的问题:
1,当你不知道自己在干什么的时候来声明一个指针变量时,类型用void来代替,当使用是就会强制更正作用范围的,不过这样的人先

2,最好不要在定义指针变量时就让他指向变量!为什么呢,因为一般我们声明的变量一般为auto变量,他在编译时不分配空间地,所以就指针没有地方指啦.善哉善哉.

3,当然啦,rejister行变量就更说no了,因为指针指向的是内存中的地址,而我在寄存器内,哎,没办法,崛起的中华是不允许他国干涉内政地!!

4,"*"(解析符,不是定义是的声名符号!)的优先级别低于"++"的哦.而且++后置时要注意,还是最后语句结束才加一的.
5,运算的优先判断:1,相邻优先2,才轮到你符号的优先级别判断......如++*a,即使你++比我*牛b但是我*近所以就是---++(*a)啦,不过没人这样用的,除非变态老师出的变态题.
6,p=a;a是数组再引用p时,p就是一个地址啦(即0x整数),p++,就代表ox(a[0]的位置+1)了,就是a[1]的地址了,so easy,但仍需理解,因为我还没吃透,就写上来吧

以上都是个人拙见,供大家分享,讨论,如有错误望大侠即使说出本人改正(下下星期就考试啦!!!!!!!!!




