指向int的指针和指向c ++中int的指针的区别是什么?

时间:2017-02-02 02:50:25

标签: c++ arrays pointers

我需要了解之间有什么区别:

指向int的指针

指向int

指针的指针

我不认为语言很重要,但要知道我正在使用c ++。

谢谢!

1 个答案:

答案 0 :(得分:3)

指针只是内存地址。因此,指向int的指针表示一个变量,其值是int的内存地址,指向int的指针指的是一个变量,其值是指向int的指针的内存地址,以及该指针的值int是int的内存地址。

我们假设你定义了三个变量如下。

int a = 184;  // Plain int, value 184.
int *b = &a;  // Pointer to int, specifically pointing to a.
int **c = &b; // Pointer to pointer to int, which points to b, which points to a.

这些变量在内存中可能会是什么样子。 (请注意,只有该值实际存储在内存中。该类型是从使用该内存的代码推断出来的。)

        +------------+        +------------+        +------------+
type    | int        |        | int*       |        | int**      |
        +------------+        +------------+        +------------+
address | 0x02618368 |        | 0x02618372 |        | 0x02618376 |
        +------------+  <---  +------------+  <---  +------------+
value   | 184        |        | 0x02618368 |        | 0x02618372 |
        +------------+        +------------+        +------------+

所以要从c中获取一个int,你需要取消引用它两次。第一个deference从c获取值,将其解释为指向int的地址,并查找该地址以获取指向int的指针,该指针等于b。第二个取消引用将结果指针中的值取为int,将其解释为int的地址,并查找该地址以获取int,该值等于a