|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 五号智能 于 2014-1-18 20:28 编辑
今天看到一个帖子,用汇编来解释指针,我就想,这不是脱裤子那啥了吗,一种编程语言竟然去用另一种编程语言来解释.难道还得去学汇编才能理解指针?这是神马逻辑.
而且这样的帖子竟然看到不少,今天在看雪也看到类似的帖子.这真是世间本无事,庸人自扰之.
现在我就告诉你们什么是指针.
了解指针,必须对"内存"这个概念有个基本的了解, 字面的意思:就是 内部存储器. 英文叫Memory.记忆体
是计算机用来存储东西的~ 怎么存储的呢? 它是靠记录电信号来存储的. 电平的高低来比喻成0或1的二进制数字.
可以记录一位二进制的电路, 我们叫它"位",英文bit .我们的内存就是由这些bit组成的.一个挨一个,组成了一条长长的线~
为了方便 存储数据和访问,我们制定了如下规则, 每8个位 称为一个字节(byte), 每个字节都有一个编号.从0到-N;
现在我们来说数据, 它就存储在内存之中. 我们访问数据,就是通过内存编号来得知这个数据的存储位置的,从而对它进行操作.
而指针变量,就是用来存储这个编号的.
int a=5;
int *p=&a;
这样我们就一目了然了 指针 p保存了变量a的地址. 现在我们可以直接通过p找到内存中的位置对这个数据进行修改.
p的值就是变量a的内存编号. 我们可以用printf或cout来打印出来看看是多少.
因为p也是一种数据,它也存储在内存之中. 所以&p 可以取出存储p的地址.
我们现在可以灵活的来掌握一下这个指针.
int p=(int)&a; // 看,我们用一个int型数据来保存这个编号,反正 在32位系统中,指针是4字节的数据,int也是,它们之后的赋值,不会出现截断的意外.
int b=*((int*)p); //哈,玩一下,强制为int指针之后再解引用. 把上面a的数据赋值给b
同学们,去玩吧,多玩玩,你就理解指针只是一个碟小菜而已.
|
|