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的值。
也就是说 指针 其实就是间接的去得到一个值。
浙公网安备 33010602011771号