在C语言中只要使用指针,必然用到*运算符。然后经常会看到不同的书中*有靠近变量类型的,有靠近变量名称的,很迷惑这两者有什么区别。后来上网查证了一下,总结如下:
总体来说,*靠近哪一个都可以,编译器都会认为是指针变量,所以本质是一样的。但是两个形式有不同的优点。
int* p;
这个可以理解为p是int类型的指针。而下面这个
int *p;
可以理解为有一个指针p是int类型,实际上也就是int类型的指针而已。
但是int* p这种类型当定义较多变量名称时,容易产生误解。例如:
int* p,q;
这句话的意思是p是int型指针变量,而q只是int类型变量。这种形式等价于
int *p,q; //即int *p,int q
因此,在这种情况下,可以将*靠近变量名称,而不是变量类型。如下:
int *p,q;
这样不会产生歧义。
当然,多分几行写就不存在这个问题了,当然可以。