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本身所在地址)

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

(*p)++和*(p++)和*p++的区别

测试的代码如下: #include "stdafx.h" #include "stdio.h" #include int _tmain(int argc, _TCHAR* argv[]) { in...
  • a904235765
  • a904235765
  • 2015年01月07日 15:49
  • 4366

**p与 *&p的区别, 即指向指针的指针和引用指针变量的区别

  • 2013年09月29日 20:18
  • 337KB
  • 下载

p,&p,*p的区别

一、区别  int z=0;  int &x = z;//引用,x与z指向同一内存单元  int *y;  y = &x;//0x0012ff14 p本身所占内存单元的地址  cout ...
  • firefly_2002
  • firefly_2002
  • 2012年09月29日 10:47
  • 15091

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

转载自http://ambitiongold.blog.163.com/blog/static/1840165522012921103511610/ 假设我们定义一个指针p。 ...
  • u012105836
  • u012105836
  • 2015年06月14日 21:46
  • 599

div span p标签三者间的区别

是段落标签,也就块元素。 也是块元素. 是内联元素。 块状元素:独占一行,width和height起作用 内联元素:width和heigh不起作用,不占一行...
  • ynw1990
  • ynw1990
  • 2016年09月06日 21:09
  • 127

*p,p和&p区别:

//*p,p和&p区别: #include int main(void) { int a=20; int *q; //定义...
  • daocaorencrl
  • daocaorencrl
  • 2015年05月13日 16:21
  • 916

</br>与<p>区别

我们介绍下html中常遇见和常用到的br />和标签之间的区别及用法,以及使用css对他们控制设置属性样式——扩展知识css换行,css不换行。 br与p区别目录 综合介绍br p 相关htm...
  • u010064842
  • u010064842
  • 2014年04月03日 09:31
  • 6364

说明一下++p 与 p++ 的区别。

假设这样的一个例子: “`c int p = -1; int y = 0; y = p++ + ++P;先分析一下它的汇编代码(没有优化): ```c subl $40, %esp ...
  • hyqsong
  • hyqsong
  • 2016年03月15日 22:59
  • 1314

<p>和<br>的区别

1.p和br都有换行作用,p标签是段落标签,br是强制换行标签。 2.是成对的,是单个的...
  • Kiddie_Lu
  • Kiddie_Lu
  • 2017年11月10日 11:28
  • 1349

span div p 三个标签区别

span和div的不同之处在于span是内联的,用在一小块的内联HTML中,前后不断行. div(想想division是什么意思)元素是块级的(简单地说,它等同于其前后有断行),用于组合一大块的代码...
  • m1654399928
  • m1654399928
  • 2013年05月30日 09:34
  • 1613
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:P、*P和&P三者的区别
举报原因:
原因补充:

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