P、*P和&P三者的区别

原创 2016年06月01日 15:30:18

转载自http://ambitiongold.blog.163.com/blog/static/1840165522012921103511610/

假设我们定义一个指针p。
那么会经常使用到三个符号:
1,p;
2,*p;
3,&p;
初学者经常会感到很迷茫,到底这三个符号表示什么?
我们知道,p是一个指针变量的名字,表示此指针变量指向的内存地址,如果使用%p来输出的话,它将是一个16进制数。而*p表示此指针指向的内存地址中存放的内容,一般是一个和指针类型一致的变量或者常量。
而我们知道,&是取地址运算符,&p就是取指针p的地址。等会,怎么又来了个地址,它到底和p有什么区别?
区别在于,指针p同时也是个变量,既然是变量,编译器肯定要为其分配内存地址,就像程序中定义了一个int型的变量i,编译器要为其分配一块内存空间一样。而&p就表示编译器为变量p分配的内存地址,而因为p是一个指针变量,这种特殊的身份注定了它要指向另外一个内存地址,程序员按照程序的需要让它指向一个内存地址,这个它指向的内存地址就用p表示。而且,p指向的地址中的内容就用*p表示。
我来举个例子说明这三个符号到底表示什么。
假设有一个楼盘的销售员,当然,现在时髦的叫法是“销售代表”之类的,我们用字母x表示他。他负责销售一个楼盘中的某套房子,此房子有一个地址为A,而他本身也需要有地方住,他居住的房子的地址为B。而这个幸运的销售员很快的卖掉了这套房子给C。现在公司要求对销售的房子必须包产到户,也就是说,现在必须提到x的时候能够管理到C。
如果用程序表示上述内容的话就可以使用指针。首先定义一个指针p,让他指向地址A,地址A中住的是C,而x本来居住的地方的地址是B。OK,现在能知道p,*p,&p表示什么了吗?没错,p表示此指针指向的地址,就是A,而*p表示此地址中居住的人,就是C,而&p表示这个销售员居住的地址,就是B。

================================================================================
以下为博主个人理解:

简而说之:
比如p的%p值代表X的地址
而*p的%d值代表的是X的值
而&p的%p值代表*p的地址

A房间里的B
C房间里的D
B指向D的%p就代表C(指向D的地址)
然后*B的%d就代表D(地址内的值)
然后&B的%p就代表A(A本身所在地址)

个人理解,如有问题,请指正。

相关文章推荐

c3p0,dbcp与druid 三大连接池的区别

了解c3p0,dbcp与druid   说到druid,这个是在开源中国开源项目中看到的,说是比较好的数据连接池。于是乎就看看。扯淡就到这。   下面就讲讲用的比较多的数据库连接池。(其实我最先接...

<br> 和 <p> 标签的区别

  • 2011年05月30日 14:48
  • 55KB
  • 下载

YV12,I420,YUV420P的区别

YV12和I420的区别        一般来说,直接采集到的视频数据是RGB24的格式,RGB24一帧的大小size=width×heigth×3 Bit,RGB32的size=width×...

P问题、NP问题、NPC问题、NP-Hard问题的概念、区别

你会经常看到网上出现“这怎么做,这不是NP问题吗”、“这个只有搜了,这已经被证明是NP问题了”之类的话。你要知道,大多数人此时所说的NP问题其实都是指的NPC问题。他们没有搞清楚NP问题和NPC问题的...

图像和流媒体 -- I 帧,B帧,P帧,IDR帧的区别

参看:什么是I帧,P帧,B帧参看:H264编码原理以及I帧B帧P帧一、H246简介    H264是新一代的编码标准,以高压缩高质量和支持多种网络的流媒体传输著称,在编码方面,我理解的他的理论依据是:...

关于操作系统里面的P-V操作的信号量跟Linux下的无名信号量的区别!

我记得刚学操作系统原理的时候,第一次接触到P-V操作,感觉好难懂喔!尤其是进行P(sem)操作时,将sem值减1,若sem 的值为负数,则调用P操作的进程暂停执行,直到另一个进程对同一个信号量做V操作...
  • hqm475
  • hqm475
  • 2011年08月23日 12:36
  • 1272

P型硅与N型硅的区别

前段时间面试一家芯片公司时,被问到了这个问题,一并整理出来,免得自己又忘记了,在面试的过程中,只要能画出价电子的图,说个大概,应该就可以了。 导电率在10*e-7 ~ 10*e3 之间的材料都称为半...
  • mutemob
  • mutemob
  • 2013年10月29日 22:53
  • 4102

c3p0、dbcp、tomcat jdbc pool 连接池区别(推荐使用jdbc pool)

查看资料,得知dbcp和c3p0都是单线程的,在高并发的环境下性能会非常低下, 决定换用tomcat自带的jdbc-pool,关于jdbc-pool的项目介绍。 区别参考链接:http://www...

【Android】直播必备之YUV使用总结 —— 常用的几种格式:NV21/NV12/YV12/YUV420P的区别

说明  因工作方面接触到图像处理这一块,需要对手机摄像头采集的原始帧做Rotate或者Scale,但无奈对此的了解少之又少,于是网上搜了一顿,完事后将最近所学总结一下,以方便之后的人别踩太多坑。  首...
  • gitzzp
  • gitzzp
  • 2016年06月15日 12:38
  • 3323

YUV使用总结 —— Android常用的几种格式:NV21/NV12/YV12/YUV420P的区别

http://doc.okbase.net/raomengyang/archive/186891.html 工作问题接触到图像这一块,需要对手机摄像头采集的原始帧做Rotate或...
  • STN_LCD
  • STN_LCD
  • 2017年06月06日 17:41
  • 494
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:P、*P和&P三者的区别
举报原因:
原因补充:

(最多只允许输入30个字)