如何理解指向指针的指针?
来源:互联网 发布:网页 字幕 滚动 js 编辑:程序博客网 时间:2024/06/05 02:50
原文链接: StackOverflow 翻译: 伯乐在线 - 菜鸟浮出水
译文链接: http://blog.jobbole.com/60647/
问题:如何理解指向指针的指针?
我在一篇教程中看到下面这段,它描述指向指针的指针是如何运作的。
引用文章相关段落如下:
1
2
int
i = 5, j = 6, k = 7;
int
*ip1 = &i, *ip2 = &j;
现在我们可以这么写:
1
int
**ipp = &ip1;
那么现在指针 ipp 指向了 ip1,ip1 指向了 i。*ipp 就是 ip1,**ipp 就是 i,或者说是 5。我们可以用我们熟悉的盒子箭头图来描述,像这样:
如果我们接着这么写:
1
*ipp = ip2;
我们就改变了 ipp 指向的那个指针(也就是 ip1),现在它指向 ip2 所指的地方。也就是说(ip1)现在它指向了 j:
我的疑问是:为什么在第二幅图里,ipp 还是指向 ip1 而不是 ip2?
最佳答案:
让我们暂时忘掉那些关于指针的各种类比。指针实际上存放的是内存的地址。
& 符号的意思是取地址,也就是返回一个对象在内存中的地址。
* 符号的意思是取得一个指针所指向的对象。 也就是如果一个指针保存着一个内存地址,那么它就返回在那个地址的对象。
所以当你这么写时 *ipp = ip2,实际上是把 ipp 存的地址所对应的对象,也就是 ip1 取到,然后把 ip2 存的值赋值给 ip1,也就是 j 的地址。
简单点就是:
&:取址。
* :取值。
0 0
- 问题:如何理解指向指针的指针?
- 如何理解指向指针的指针?
- 如何理解指向指针的指针?(转载)
- 如何理解指向指针的指针?
- 如何理解指向指针的指针?
- 如何理解指向指针的指针?
- 如何理解指向指针的指针?
- 如何理解指向指针的指针?
- 如何理解指向指针的指针
- “指向指针的指针”的理解
- 指向指针的指针, 现在很理解!
- 理解指向函数的指针
- 理解指向指针的引用
- 理解指向指针的引用
- 理解指向指针的引用
- 怎么理解指向指针的指针(双指针 **)
- 理解一般指针和指向指针的指针
- 理解一般指针和指向指针的指针
- hibernate 4.x buildSessionFactory 的使用
- 深入理解JavaScript系列(4):立即调用的函数表达式
- C语言中scanf、getchar、gets函数的比较
- 关于*p++ *(p++) (*p)++ *++p *(++p) ++*p ++(*p)
- Extjs4.0.7 提交表单
- 如何理解指向指针的指针?
- Java中getResourceAsStream的用法
- Android开发 语音识别技术之科大讯飞语音识别(一) — 语音听写
- Linux rhel Access denied for user ’root’@’localhost’ (using password: YES)
- Python 书籍推荐
- MyReport 2.6.4.0新功能
- c++ 之类的前置声明
- 3ds Max骨骼动画
- 工作那些事(二十六)个人和团队