在C系列语言中使用指针,必然会用到 * 运算符。然后会看到不同的定义方式,有靠近靠近变量类型的,有靠近变量名称的。
总体来书,* 靠近哪一个可以,编译器都会认为是指针变量,所以本质是一样的。
但是两两种形式有不同的优点。
- p是int类型的指针;
int* p;
- 指针p是int类型
int *p;
实际上也就是int类型的指针
对比
但是 int* p这种类型当定义较多变量名称时,容易产生误解。例如:
int* p, q;
这句话的意思是p是int型指针变量,而q只是int类型变量。这种形式等价于:
int *p, q;//即 int *p, int q
因此,在这种情况下,可以将*靠近变量名称,而不是变量类型。如下:
int *p, q;
避免了误解。