
9.2.1 指针变量的定义
变量的指针就是变量的地址。可以定义一个指向“变量”的“指针变量”。这种指针变量在定义的时候,会在定义的语句中引入一个“*”,表示“这是一个指针变量”。
指针变量定义的一般形式如下,“*”符号可以靠向右侧或者左侧,甚至“*”两侧的空格都可以省略不写,所以如下三种指针变量定义的一般形式都可以:
· 类型标识符*标识符;
· 类型标识符*标识符;
· 类型标识符*标识符;
上述一般形式中的标识符就是指针变量的名字。看看如下范例:

现在,如果要让指针变量指向一个整型变量,可以用赋值语句使一个指针变量指向一个整型变量。看如下代码:

有几点说明:
(1)请注意,定义指针变量的时候,指针变量前有“*”号表示正在定义一个指针变量,但在使用指针变量时,指针变量前是没有“*”(星号)的。所以,指针变量名是mypoint1、mypoint2,而不是*mypoint1、*mypoint2。
(2)一个指针变量只能指向同一个类型的变量。看看如下范例:

这里可以设置一个断点,观察一下i、j、pm3、mypoint1这几个变量的值、地址都是什么。当执行程序,并且断点停到某个位置时,鼠标放到某个变量上,即可看到该变量的内容,如图9.4所示。

图9.4 调试停到断点处,鼠标放到pm3上,观察
图9.4中,pm3的值是0x010ff950,因为pm3是一个指针变量,它里边保存的是一个地址,而这个地址其实就是0x010ff950(类似于图9.3中保存的数字1000),而这个数字后面有个大括号{},大括号中的内容是12.6000004,这个数字显然就是真正的内存地址0x010ff950中所保存的内容(类似于图9.3中保存的数字5),那么,如果想查看pm3的地址要怎样查看呢?只需要在断点停到某个位置时在出现的“内存”查看窗口(若未出现该窗口,可选择“调试”→“窗口”→“内存”→“内存1”命令)右侧的编辑框中输入&pm3(变量名之前加一个“&”就可以查看任何变量的地址)然后再按Enter键,就能看到pm3的地址了,如图9.5所示的0x010FF92C就是pm3的地址(类似于图9.3中3000那个数字)。一定注意,再次强调,必须是断点停到某个位置时才能查看这些信息。

图9.5 调试停到断点处,查看某个变量(包括指针变量)的地址
当然,当调试停到断点处时,也可以按Shift+F9键(或选择“调试”→“快速监视”命令),并在其中输入要监视的内容也是可以看到结果的,如输入&pm3并按Enter键可以看到指针变量pm3的地址,输入k并按Enter键可以看到变量k的值,输入&k可以看到变量k的地址等,如图9.6所示。

图9.6 快速监视窗口,用于快速查看变量的值、变量的地址等