“Coding的世界,如江湖险恶。这Coding的江湖中,有着许多的门派。我们呢,用的是C语言,正如少林正宗,乃武学泰斗之位。我大C语言流派,乃是Coding之祖脉,IT之苗根。”
这不是天桥的郭德纲在说书,这是李那厮同学在给图笨笨讲C……
“话说各门各派都有其独到的武功,或者特有的法宝。我们武林正宗Coding泰斗大C语言流派呢,拥有其他任何流派都不具有的独门武功”
“是啥?”
“指针!”
“指针是个啥?钟表上那个?”
“不是,指针呢,是一种C语言里特有的变量类型,有了它,可以直接对内存中的数据进行访问,能够做到很多其他语言不能做到的事情!”
“不明觉厉……”
“啥意思?”
“不明白你在说什么,不过觉得挺厉害。”
“好吧,我会让你明白的。首先,你知道,C语言里有各种类型的变量是吧。”
“恩,知道了一些。比如int,就是整数,char就是字符,float就是浮点型之类的。”
“对,这些都是基本的数据类型。但你知道这些类型的数据在内存里都是怎么放着的么?”
“这个……我就不知道了”
“恩,谅你也不知道,好,听我慢慢的道来。首先呢,我们改改你那个HelloWorld程序”说着,那厮大笔一挥——呃不对,应该是大键盘一挥,或者,一顿乱敲,总之,很快就写出了一个小程序:
代码: 全选
#include<stdlib.h>
int main(int argc, char* argv[]) {
int a=3;
char b=’1’;
printf("Hello World!There is a integer number %d, and a char %c\n",a,b);
retrun 0;
}
“好,比如这个小程序。里面用到了两个变量,分别叫做a和b。程序里申请了这两个变量,那么程序运行的时候,就会为这两个变量分配相应的内存空间。比如a,这是一个int型,也就是整数型。那么在大多数平台上面,他是一个32位的数据,也就是占4个字节的内存空间。而变量b,是一个char型,也就是字符型,一般只占1字节的空间。比如我们计算机里的内存是这个样子的:

- 屏幕快照 2013-06-17 下午10.03.18.png (8.25 KiB) 查看 9977 次
每一个 格子代表一个字节的存储空间,那么变量a和b在内存里可能就是这样放的:

- 屏幕快照 2013-06-17 下午10.03.55.png (10 KiB) 查看 9977 次
前面那个00000003存放的就是变量a,后面那个31就是变量b(字符‘1’的ASCII码的16进制)。当程序中需要用到变量a的时候,就会从前4个格子里去取数据,当用到变量b的时候,就会到第一排第6个格子里取数据。当然计算机不会用“第一排第六个”这么土的叫法去访问内存,而是使用地址。