在C语言中,有很多声明和定义变量、指针的方法,但以前真的没有了解过,每种不同的定义会改变变量在内存中排布的位置。比如全局变量在data区、局部变量在栈中、而malloc分配的内存则在堆中,并且使用了static和不使用结果又不一样,为了避免以后对这些概念再出现混淆,特意做了笔记配图。方便记忆!
数组与指针的不解之缘
所有数组名都表示数组的首地址,并且这个地址是个常量,是不可以被赋值的。既然是地址常量,从某种角度说,他也是个指针,所以数组名和指针是等同的。那么我们就可以非常灵活的使用指针及数组名来访问数组中的元素。可以注意看代码中最后几行访问数组的方式是多么的怪异,但的确它是可以的。
一幅图看懂strlen和sizeof
因为不熟练,往往我在编写代码的过程中,总会把字符串长度、占用空间、大小等概念搞混淆,所以做个笔记,用图文的方式记录一下让自己记忆的更加清楚一些,下图就是一个字符串在内存中的排布,以及一些计算单位的函数是如何计算他们的所需的数据的。要注意的是,在内存中,最小单位就是BYTE。
原码、反码、补码的区别和运算
在计算机内部,负数都是以补码方式存在的。正数的原码、反码、补码都是一样的。而负数的源码、反码、补码略有不同,具体的计算方法如下:
世界,你好!
欢迎使用WordPress。这是系统自动生成的演示文章。编辑或者删除它,然后开始您的博客!