指针剖析,地址关系 (一)
来源:互联网 发布:ios js rsa 编辑:程序博客网 时间:2024/05/16 06:41
一:先看代码
#include <iostream>
using namespace std;
int main()
{
int i = 0 ;
int j = 5 ;
int * p = &i;
cout<<"*p ="<<*p<<endl;
cout<<"p ="<<p<<endl;
cout<<"&i ="<<&i<<endl;
cout<<"&p ="<<&p<<endl;
cout<<"*&p ="<<*&p<<endl;
cout<<"&*p ="<<&*p<<endl;
return 0;
}
二:查看输出
cyq@cyq-desktop:~/桌面/C$ ./10
*p =0
p =0xbf98eebc
&i =0xbf98eebc
&p =0xbf98eeb4
*&p =0xbf98eebc
&*p =0xbf98eebc
三:解释输出
代码中,指针p指向i,也就是说,p存的是i的地址(即&i),而*p就是i的内容
&p是取变量p的地址。再深一步讲,* 和& 一个是取内容,一个是取地址。
而且两个具有相同优先级,都是从右向左方向结合。所以不难理解
*&p 和 &*p 的结果一样。理解的时候,分别先运算& 和 * 再往前
运算即可。最后给个图表看看就很明白了。
地址 内容 对应
0xbf98eeb4 0xbf98eebc &p p
0xbf98eebc 0 p(&i) i
也就是输出的结果:
&p= 0xbf98eeb4
p= 0xbf98eebc
p(或者 &i)=0xbf98eebc
i=0
*&p=&*p=p 这三个值是一样的。
介绍个在线输入法: http://inputking.com/ime/ime.php
声明:本文档可以随意更改,但必须署名原作者
作者:凤凰舞者 qq:578989855
- 指针剖析,地址关系 (一)
- 指针剖析,地址关系(四) const 那些事
- 指针剖析,地址关系 (二) 数组与指针、数组名的关系
- 指针剖析,地址关系 (三) 引用传递与非引用传递
- 深度剖析指针和数组的关系
- VC++ 内存机理的个人理解(一)——地址和指针的关系
- 指针*p与地址之间的关系
- 变量指针和地址之间的关系
- 再回首(一):数组指针剖析
- 剖析C/C++二维数组与指针的关系
- 指针和一维数组关系
- 一维数组与指针的关系
- (语法)内存地址和指针<一>
- 数组指针、数组首地址与内存的关系
- 引用 与 取地址 以及指针的关系
- 引用 与 取地址 以及指针的关系
- 引用 与 取地址 以及指针的关系
- c语言中数组中的地址和指针的关系
- 读写excel, EXCEL的数据转存到ACCESS[代码]
- Hibernate3.5却报异常 java.lang.IncompatibleClassChangeError: class org.hibernate.cfg.ExtendedMappings has interface
- UDP和TCP协议包大小的计算
- VC++6.0中用ODBC连接mysql数据库
- java.lang.NoSuchMethodError: javax.persistence.UniqueConstraint.name()Ljava/lang/String
- 指针剖析,地址关系 (一)
- js表单验证大全
- 教你用GetObjectSnapPoint
- CTabCtrl中隐藏标签的方法
- 规则驱动的BPM
- 堆与栈的区别
- RPC远程过程调用实例剖析(转载)
- 上传文件大小在webconfig中的设置
- ERROR 1130: mysql 1130连接错误的有效解決方法