天天看点

《指针的编程艺术(第二版)》一第二章 指针与变量2.1 一颗星星:表示一把钥匙

本节书摘来自异步社区《指针的编程艺术(第二版)》一书中的第2章,第2.1节,作者 蔡明志,更多章节内容可以访问云栖社区“异步社区”公众号查看

指针的编程艺术(第二版)

2-1 一颗星星:表示一把钥匙

2-2 两颗星星:表示两把钥匙

2-3 三颗星星:表示三把钥匙

2-4 练习

如果要间接访问某一变量值,我们可使用指针来完成。

本章将介绍指针变量(pointer variable)与一般变量的关系。首先介绍的是,如何定义一个指针变量,如下所示。

上述语句表示下列3种含义。

1.ptr是一个指针变量。

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

3.使用ptr可以得到整数变量x的值。你可以把 比喻成一把钥匙,用它来打开当前ptr指向的信箱,而得到该信箱内的信件。

先来看看范例onepointer。

范例onepointer

输出结果

《指针的编程艺术(第二版)》一第二章 指针与变量2.1 一颗星星:表示一把钥匙

程序中的

 <code>`</code>javascript

int *ptr = &amp;x;

表示将&amp;x赋值给ptr,而不是将地址(&amp;x)赋给值(ptr),否则会造成两边的数据类型不同。程序使用ptr间接地得到x的值。间接访问的过程很像间谍(spy)的工作,他们不会直接指派工作,这样才不会暴露彼此之间的关系。

强烈建议大家画出程序定义的示意图,例如,下图为ptr = &amp;x的示意图,你可以很容易的从图形中看出实质。

《指针的编程艺术(第二版)》一第二章 指针与变量2.1 一颗星星:表示一把钥匙

最后,将&amp;y赋值给ptr。

其示意图如下所示。

《指针的编程艺术(第二版)》一第二章 指针与变量2.1 一颗星星:表示一把钥匙

如果将指针与const共享,则应该注意什么?请参阅范例constpointer。

范例constpointer

《指针的编程艺术(第二版)》一第二章 指针与变量2.1 一颗星星:表示一把钥匙

程序中

这条语句的示意图如下所示。

《指针的编程艺术(第二版)》一第二章 指针与变量2.1 一颗星星:表示一把钥匙

这条语句表示p指针指向变量a的地址。因为const 写在int的前面,表示不可以使用p指针间接改变变量a的值,如p=200。但可以改变p指针指向另一变量,如p=&amp;b。

而下一条语句

int * const q = &amp;b;

继续阅读