考虑如下声明:
int* ptr1, ptr2;
声明本身没错,不过,可能跟我们的本意不同,它把ptr1
声明为整数指针,而把ptr2
声明为整数。我们将星号有意紧挨着数据类型,而ptr1
前面则加了空格。这样的位置对编译器来说没有区别,但是对于读代码的人来说,可能暗示着ptr1
和ptr2
都是整数指针。然而,只有ptr1
是指针。
在同一行中把两个变量都声明为指针的正确写法如下所示:
int *ptr1, *ptr2;
注意 每个变量声明独占一行更好。
用类型定义代替宏定义是另一个好习惯。类型定义允许编译器检查作用域规则,而宏定义不一定会。
我们可以使用宏指令辅助声明变量,如下所示。在这里,define
指令包装了整数指针,并用它来声明变量:
#define PINT int*
PINT ptr1, ptr2;
不过,结果就跟前面所说的一样。更好的方法是用下面的类型定义:
typedef int* PINT;
PINT ptr1, ptr2;
两个变量均被声明为整数指针。