C/C++指向指针的指针
C++ 指针 指向
2023-09-11 14:17:47 时间
我在一篇教程中看到下面这段,它描述指向指针的指针是如何运作的。
引用文章相关段落如下:
int i = 5, j = 6, k = 7;
int *ip1 = &i, *ip2 = &j;
现在我们可以这么写:
int **ipp = &ip1;
那么现在指针 ipp 指向了 ip1,ip1 指向了 i。*ipp 就是 ip1,**ipp 就是 i,或者说是 5。我们可以用我们熟悉的盒子箭头图来描述,像这样:
如果我们接着这么写:
*ipp = ip2;
我们就改变了 ipp 指向的那个指针(也就是 ip1),现在它指向 ip2 所指的地方。也就是说(ip1)现在它指向了 j:
我的疑问是:为什么在第二幅图里,ipp 还是指向 ip1 而不是 ip2?
最佳答案:
让我们暂时忘掉那些关于指针的各种类比。指针实际上存放的是内存的地址。
& 符号的意思是取地址,也就是返回一个对象在内存中的地址。
* 符号的意思是取得一个指针所指向的对象。 也就是如果一个指针保存着一个内存地址,那么它就返回在那个地址的对象。
所以当你这么写时 *ipp = ip2,实际上是把 ipp 存的地址所对应的对象,也就是 ip1 取到,然后把 ip2 存的值赋值给 ip1,也就是 j 的地址。
简单点就是:
&:取址。
* :取值。
相关文章
- C++中指向函数指针的指针数组
- C++ 智能指针详解
- C++ this指针的理解
- 【侯捷】C++内存管理机制
- 详解C++标准库<sstream>中的类stringstream,并利用它实现OpenCV下的图片批量读取
- 35 C++ - 指针运算符(*、->)重载
- c++中指针,堆栈内存分配重要概念理解汇总(实例注释)
- 《C++覆辙录》——1.4:未能区分函数重载和形参默认值
- 《从缺陷中学习C/C++》——6.6 指针变量的传值和传址
- C++ 智能指针最佳实践&源码分析
- 基于C++模拟实现Excel【100010651】
- C++ 内存管理与智能指针
- 风筝的C++随时记
- C/C++中的日期和时间函数(strftime,clock_t, time_t)
- C++11 智能指针 知识整理笔记
- 106、【树与二叉树】leetcode ——501. 二叉搜索树中的众数:双指针法+哈希表法(C++版本)
- 【C++快速上手】四、this指针学习笔记
- (C++ STL)list的实现
- C++智能指针原理
- C++反汇编第二讲,反汇编中识别虚表指针,以及指向的虚函数地址
- C++ vector的用法
- 编程参考 - C++里的类指针不要乱传
- C/C++ 指针函数与函数指针