不知道大家写C的时候有没有过跟我一样的疑惑:申请一个指针变量的时候,星号到底是靠左还是靠右?
即,是这样:
int* p;
还是:
int *p;
有的人说这只是一种习惯,怎么写都可以。
也有人说,当你在一行申请多个变量时,星号靠左会容易产生迷惑,即:
int* p,q;
这时候p是一个int指针,而q则是一个int变量。但是很容易误理解成两个都是int指针,所以应该靠右,这样写:
int *p,q;
但是其实这样也会有一个问题,导致容易产生混淆,就是如果你声明的同时赋值:
int foo = 10;
int *p = &foo;
// *p == foo
// p == &foo
声明的时候,写的是“*p” 等于 “&foo”,但是在使用的时候,实际上“*p” 等于 “foo”,“p” 才等于 “&foo”。
如果是新手,看似不起眼的一个小迷惑,确很容易成为一个坑。