黑马程序员技术交流社区

标题: 指针是什么?一些心得(不懂的过来看一看) [打印本页]

作者: CrazyMan    时间: 2014-11-27 21:50
标题: 指针是什么?一些心得(不懂的过来看一看)
指针:看视频上老师说如果你说你学c语言除了指针其他都搞定了,那你还不如干脆说你没学过c语言呢
想通俗一点,其实生活中处处都有指针,我们也处处在使用它。有了它我们的生活才更加方便了。先说一下生活中的例子吧形象一点吧,比如你要住旅店,你到了一家旅店,你问店长还有房间没,店长说有,给你了一张门卡,门卡上写着你的房间号,于是你根据店长给你的门卡上写的房间号找到了那间你要住的房间。
你想想看,这张门卡的作用,门卡本身不是房间。那你有如何找到房间的呢?是因为门卡上写着房间号,也就是房间的具体位置嘛,其实门卡就是一个指针了,门卡本身又不是房间,而是写着房间的号码,你就可以通过这个指针找到了你要住的房间了。想一想是不是这个道理。
         那么我们c语言中指针又是什么呢?











         下面看一条声明一个指向整型变量的指针的语句:
          int *pi;
          pi是一个指针,当然我们知道啦,但是这样说,你就以为pi一定是个多么特别的东西了。其实,它也只过是一个变量而已。使用“int *pi”声明指针变量—— 其实是在内存的某处声明一个一定宽度的内存空间,并把它命名为pi。别把它想得太复杂了,想简单点就好了,有木有。既然说到指针和变量一样没有什么本质上的区别,那么问题又来了,我们要指针干嘛呀,这才是重点,那么想想,指针变量到底存储什么内容呢,看看这个语句,pi =&i; “&”这个符号应该大家都知道吧,学过那个scanf函数用到过,&i也就是返回i变量的地址编号。整句的意思就是把i地址的编号赋值给pi,也就是你在pi里面写上i的地址编号。
结合我上面举得例子,pi的作用是不是就是那个门卡,你现在看懂了吗?因此,我们就把pi称为指针。所以你要记住,指针变量所存的内容就是内存的地址编号!好了,现在我们就可以通过这个指针pi来访问到i这个变量了,不是吗?让我们看一下这条语句:printf("%d", *pi);那么*pi什么意思呢?你只要这样读它:pi的内容所指的地址的内容(慢慢读不急,一个字一个字读,在细想一下,懂了没,嘿嘿,),就是pi这张“门卡”上所写的房间号所对应的那间房。
        到此为止,你掌握了类似&i、*pi写法的含义和相关操作吗?总的一句话,我们的门卡就是我们的指针,同样我们的pi也就是我们的门卡!剩下的就是我们如何应用这张门卡了。想想是不是这个理!
       加油,码友们!!!


      

作者: 龙@程序员    时间: 2014-11-27 22:14
那么给力,我现在愁指向指针的指针
作者: mayhaha    时间: 2014-11-27 22:41
谢谢楼主,先马克一下再看
作者: CrazyMan    时间: 2014-11-28 20:11
mayhaha 发表于 2014-11-27 22:41
谢谢楼主,先马克一下再看

谢谢啦,一起加油





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2