关于指针的一些理解
2016-05-07 23:09
351 查看
1. 指针的定义
指针保存的是所指向的对象的地址。
2. 指针的指针
同理,我们可以定义一个指向指针的指针, 它保存的是所指向的指针的地址
3. 指针内容的读取
上面的程序中,指针p的值是a的地址,我们想通过p来得到a的值,则用*p; 通过q来获取a的值,则用**q。
a's address is: 0x7fff5bce5a9c.
p's value is: 0x7fff5bce5a9c.
p 指向的对象的值: 3.
p's address is : 0x7fff5bce5a90.
q's value is: 0x7fff5bce5a90.
q 指向的指针的值: 0x7fff5bce5a9c.
q 指向的指针指向的对象的值: 3.
实际上就是说:
a == *p == **q;
&a == p == *q;
&p = q;
指针保存的是所指向的对象的地址。
int a = 3; int *p = &a; // 定义一个指向整形数a的指针p,此处,int代表p是指向一个整形数的指针,*表明 // 当前定义的是一个指针,p的值为&a,即a的地址上面的指针也可以这样定义
int *p; p = &a;
2. 指针的指针
同理,我们可以定义一个指向指针的指针, 它保存的是所指向的指针的地址
int a = 3; int *p = &a; int **q = &p; //**说明是指向指针的指针
3. 指针内容的读取
上面的程序中,指针p的值是a的地址,我们想通过p来得到a的值,则用*p; 通过q来获取a的值,则用**q。
printf("a's address is: %p.\n", &a); printf("p's value is: %p.\n", p); //地址的占位符都是%p printf("p 指向的对象的值: %d.\n", *p); printf("p's address is : %p.\n", &p); printf("q's value is: %p.\n", q); printf("q 指向的指针的值: %p.\n", *q); printf("q 指向的指针指向的对象的值: %d.\n", **q);上面代码的输出:
a's address is: 0x7fff5bce5a9c.
p's value is: 0x7fff5bce5a9c.
p 指向的对象的值: 3.
p's address is : 0x7fff5bce5a90.
q's value is: 0x7fff5bce5a90.
q 指向的指针的值: 0x7fff5bce5a9c.
q 指向的指针指向的对象的值: 3.
实际上就是说:
a == *p == **q;
&a == p == *q;
&p = q;
ID: | q | p | a |
地址: | &q | &p | &a |
值: | &p | &a | 3 |
相关文章推荐
- 关于指针的一些事情
- 如何利用“IP地址欺骗”
- 网络管理之IP地址篇
- ip地址基础知识
- IP地址组成与类型
- C#实现根据给出的相对地址获取网站绝对地址的方法
- C# Pointer指针应用实例简述
- C++智能指针实例详解
- C++指向函数的指针实例解析
- 关于c语言指针的两处小tip分享
- 浅析iterator与指针的区别
- 探讨C++中数组名与指针的用法比较分析
- C++编程指向成员的指针以及this指针的基本使用指南
- 详解C++中的指针、数组指针与函数指针
- C++中字符串以及数组和指针的互相使用讲解
- C语言安全之数组长度与指针实例解析
- C++中指向对象的常指针与指向常对象的指针详解
- 指向变量的常指针与指向常变量的指针详细解析
- C#通过指针实现快速拷贝的方法
- php中将指针移动到数据集初始位置的实现代码[mysql_data_seek]