[问题] 双重指标

楼主: spong (请输入ID)   2020-06-15 01:40:38
#include<iostream>
using namespace std;
int main(void)
{
int x = 5;
int *ptr=&x;
int **temp =&ptr;
cout << "&ptr="<<ptr<< endl;
cout << "*ptr=" << *ptr<< endl;
cout << "&temp=" <<temp <<endl;
cout << "**temp="<<**temp <<endl;
return 0;
}
既然双重指标,是指标的指标,为什么不能宣告int *temp 去指向 int *ptr呢?
一定要用**temp?
作者: loveme00835 (发箍)   2020-06-15 01:51:00
型别才是最重要的, 不要用值去学习
作者: poolongkong (普拢贡)   2020-06-15 02:21:00
https://ideone.com/4r5xXd其实这个写法的概念就跟value vs. pointer是一样的如果想要保留变量在函式中的任何操作,可以透过传递变量位址的方式同理,如果想要保留一维指标在函式中的操作,可以透过传递指标位址的方式
作者: sarafciel (Cattuz)   2020-06-15 10:55:00
你的code在语意上错了 ptr跟&ptr是不一样的
作者: Richun (解放左手的OO之力)   2020-06-15 14:40:00
你可以试着用指标实作一个二维阵列 试试只有int*会怎样int**我会解释成(int*)*,是存一个(int*)变量的位址的型态
作者: loveme00835 (发箍)   2020-06-15 15:57:00
把指标值印出来当参考的这种学习方法很大机会是概念理解有误, 处理复杂一点的型别就会出问题
作者: chuegou (chuegou)   2020-06-15 21:38:00
指向“型别为指标的变量”的指标指向“型别为int的变量”的指标被指的东西不一样
作者: dces4212 (flawless)   2020-06-17 00:14:00
对名字误解也会让你难理解它的用途,他不叫双重指标,而是指标的指标,顾名思义,他是指向指标的指标,主要用来操作指标的内容(内存位址),而非其对应资料型态所指向的资料*所指的资料

Links booklink

Contact Us: admin [ a t ] ucptt.com