C艺术篇 2-1 指针:表示为一把钥匙

首先讨论的是,如何定义一个指针变量,如下所示:

int x = 100;

int *ptr = &x;

上述语句表示下列三种意义:

1.ptr是一个指针变量。

2.ptr变量存储的数据是某一变量的地址(假设是整型变量x的地址)。

3.利用*ptr可得到整型变量x的值。你可以比喻 * 是一把钥匙,用它来打开目前ptr指向的信箱,从而得到此信箱被的信件。

程序中的

int *ptr = &x;

其实是下列两条语句的组合

int *ptr;

ptr = &x;

表示将&x 指定给ptr,而不是将地址(&x)指定给值(*ptr),否则会造成两边的类型不同。程序利用*ptr间接地得到x的值。

间接访问的操作很像间谍的工作,他们不会直接指派工作,这样才不会暴露彼此之间的关系。最后,将&y指定给ptr。

从图示得出一问题:ptr变量的地址与ptr里面的内容。

建议大家画图来理解:

 

每定义一个变量 这个变量都会生成自己的地址。开头已经说过ptr是一个指针变量。

既然是变量 它就存在地址。所以ptr就存在自己的地址。

而它的内容被赋予了一个值(可以是变量)。

所以 * 是钥匙,打开这个变量地址的钥匙,它就可以得到x的值。

也就是说 指针 其实就是间接的去得到一个值。

posted @ 2018-11-22 21:18  Hh_blog  阅读(204)  评论(0)    收藏  举报