http://ambitiongold.blog.163.com/blog/static/1840165522012921103511610/
来源:互联网 发布:手机测试温度软件 编辑:程序博客网 时间:2024/06/01 14:12
关于指针P *p &p的说明
假设我们定义一个指针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。
0 0
- http://ambitiongold.blog.163.com/blog/static/1840165522012921103511610/
- http://junxia0404.blog.163.com/blog/static/265275572007498251691/
- http://blog.163.com/xiaoloong@126/blog/static/113726939201022761055233/
- http://qgjie456.blog.163.com/blog/static/3545136720112305582651/
- http://blog.163.com/mad010@126/blog/static/12237155200841645952814/
- 宏展开 http://hubeihuyanwei.blog.163.com/blog/static/2820528420111151152949/
- http://blog.163.com/023_dns/blog/static/1187273662012125112426472/
- http://blog.163.com/ecy_fu/blog/static/4445126200921512556887/
- http://picano.blog.163.com/blog/static/3108297620101112114513648/
- live555 http://jl9045.blog.163.com/blog/static/216206722011316103126788/
- http://blog.163.com/guotai_li/blog/static/110718702201091293641905/
- http://strong0511.blog.163.com/blog/static/15115379520124510362211/
- http://cl314413.blog.163.com/blog/static/19050797620121080918237/
- 转自:http://rongjih.blog.163.com/blog/static/33574461201247102329705/
- http://qbaok.blog.163.com/blog/static/1012926520119219573294/
- http://ranfeng0610.blog.163.com/blog/static/185708284201251524110617/
- http://blog.163.com/wzi_xiang/blog/static/65982961201302210854891/
- http://xory001.blog.163.com/blog/static/136215947201181805757873/
- ListFragment 使用ListView and 自定义Adapter(转载)
- Improving the way neural networks learn
- STL容器学习总结
- Node.js文件系统、路径的操作函数
- Qt Designer的进阶使用
- http://ambitiongold.blog.163.com/blog/static/1840165522012921103511610/
- ubuntu中vi编辑器的使用
- HDU-5053-the Sum of Cube【打表】
- MySQL执行计划解读 转他人文章
- 浅析RPC
- websocket相关
- IOS树视图学习总结
- SDUT2139图结构练习——BFS——从起始点到目标点的最短步数
- 36.在Ubuntu上打造方便好用的Python开发环境