鱼C论坛

 找回密码
 立即注册
查看: 3769|回复: 23

[技术交流] 一.指针详解之变量

[复制链接]
发表于 2013-4-1 19:59:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
    众所周知,指针是C语言里的重点和难点,如果能够运用的好,它会助你事半功倍,反之,则会给你带来很多的麻烦。初学者在学习指针的时候可能会比较困惑,碰到错误也不知道如果去解决,一时间也找不到易懂的教学资料,头痛万分。针对这个问题,我准备写一个关于指针的教程。尽可能用通俗、透彻的讲解指针,希望能让大家明白指针到底是个什么玩意。由于水平有限,如果大家发现我出现什么错误还请指出哈。闲话少说了,我们进入正题。今天我们要说的是----“变量”。
    不是要说指针吗?怎么扯到变量上面来了呢?呵呵,其实,我发现有不少人之所以不理解指针的原因有很大一部分是因为没有真正的理解变量。因为指针也是一种特殊的变量嘛。
    下面举个简单的例子:
        int a;
        int b;
        a = 2;
        b = a;
    很显然,我在上面定义了两个变量a和b,2是常量。大家注意到了变量a既可以在等号左边(叫做左值),也可以在等号右边(叫做右值)。而常量2若是放在等号左边,大家可以试验下,编译器会报错的。所以,变量既可以做左值,也可以做右值,而常量只可以做右值。
    现在回到代码处,int a;这句代码到底发生了什么?其实编译器会做两件事,先是分配一个4字节(不同的环境可能不同)的内存块,然后给这个内存块命名为“a”。当a = 2时,事实上是把2放到a所代表的这个内存块。当b = a时,a代表的是这块内存里的数值2,然后把2复制到b所代表的内存块。想深入了解的可看下面一段,如果看不懂也没关系,不影响以后的学习。
/**************想深入了解可以看看**************/
其实,CPU是不认识诸如a、b这样的符号,这些是给编译器看的。编译器会生成一个符号表,每当定义一个变量,就会把这个变量名插入到符号表,与这个变量名关联的是内存块的地址。所以可以把变量看做内存块的一个别名。
**************************************

知道这些,理解指针变量就容易了。比如int *p。这句代码干了什么,不就是分配了一块内存,然后取个名字叫做p吗?如果p = &a,那么就把a的地址放到p所代表的这块内存里面。呵呵,就是这么简单的事情。经过上面的分析思路有没有变得清楚一些。
游客,如果您要查看本帖隐藏内容请回复


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-1 21:06:43 | 显示全部楼层
顶顶,来学习了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2013-4-1 21:50:03 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-1 21:51:09 | 显示全部楼层
正好不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-2 04:21:50 | 显示全部楼层
很好,学习了,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-2 07:56:43 From FishC Mobile | 显示全部楼层
很好,支持一个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-2 08:48:41 | 显示全部楼层
顶顶,来学习了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-2 09:54:34 | 显示全部楼层
看看。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-2 20:06:00 | 显示全部楼层
dingding.......
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-2 23:45:10 | 显示全部楼层
a a a a 学习啊。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-3 00:03:48 | 显示全部楼层
经过上面的分析思路变得清楚一些。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-3 07:55:35 | 显示全部楼层
强烈支持楼主ing……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-3 08:57:40 | 显示全部楼层
强烈支持楼主ing……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-3 09:52:49 | 显示全部楼层
看到这帖子真是高兴!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-3 09:54:31 | 显示全部楼层
长姿势啊!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-3 10:08:31 | 显示全部楼层
楼主真有耐心,写的这么好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-3 10:11:03 | 显示全部楼层
表示看到这样的先富真开心
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-3 18:40:20 | 显示全部楼层
强烈支持楼主ing……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2013-4-3 19:48:13 | 显示全部楼层
这个其实应该顶起来啊!准备写第二篇~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-30 01:37:47 | 显示全部楼层
指针真的是个挺难搞懂的东西
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 03:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表