我经常看到c ++程序带有指向变量的指针,即** i。它是什么意思,为什么使用它。不能我们只使用一个指针而不是那个。单个指针和指针指针之间有什么区别。请解释每一步。谢谢。
答案 0 :(得分:1)
变量占用一些空间来存储。这个空间取自内存。假设您的堆栈(内存)从0x12 34 56 78
开始,并且您的整数a
的值为4
:
int a = 4;
你的记忆可能如下:
0x12 34 56 78: 0x00 00 00 04 (a)
现在假设你还有一个指向a
的指针:
int a = 4;
int* p = &a;
您的记忆将如下:
0x12 34 56 78: 0x00 00 00 04 (a)
0x12 34 56 7c: 0x12 34 56 78 (p)
现在假设你有一个指向p
的指针:
int a = 4;
int* p = &a;
int** q = &p;
您的记忆将如下:
0x12 34 56 78: 0x00 00 00 04 (a)
0x12 34 56 7c: 0x12 34 56 78 (p)
0x12 34 56 80: 0x12 34 56 7c (q)
您可以按照地址从q
到p
到a
。指针是一个间接层:它们指定某些东西,而不是它是什么。