从语法上来说,如下都对:
int* p; // OO Style, Type emphasis
int *p; // Procedural style, Expression emphasis
int * p; // Unconventional Style, No emphasis
结论:
我选择 int* p;
为什么:
缺点:
1 int* p, p1; 这种情况,会误以为p1为指针,实际上是int型。
int *p, *p1;这是支持这种写法的主要原因。
(1) 不建议一行定义多个变量。
(2) 可以写成int* p, * p1;
优点:
1 强调类型。
2 int* fun(); 比 int *fun(); 从视觉上,更容易看清楚返回的是指针类型。
特别是,从视觉上int (*fun_p)();区别更大一些。避免将函数指针,认为是返回指针的函数。
3 int const * p; 和const int* p;含义一样,
int* const p; 和 int * const p一样,
用const int* const p;写法,最兼容几种写法。
please read:
http://stackoverflow.com/questions/377164/whats-your-preferred-pointer-declaration-style-and-why
int* p; // OO Style, Type emphasis
int *p; // Procedural style, Expression emphasis
int * p; // Unconventional Style, No emphasis
结论:
我选择 int* p;
为什么:
缺点:
1 int* p, p1; 这种情况,会误以为p1为指针,实际上是int型。
int *p, *p1;这是支持这种写法的主要原因。
(1) 不建议一行定义多个变量。
(2) 可以写成int* p, * p1;
优点:
1 强调类型。
2 int* fun(); 比 int *fun(); 从视觉上,更容易看清楚返回的是指针类型。
特别是,从视觉上int (*fun_p)();区别更大一些。避免将函数指针,认为是返回指针的函数。
3 int const * p; 和const int* p;含义一样,
int* const p; 和 int * const p一样,
用const int* const p;写法,最兼容几种写法。
please read:
http://stackoverflow.com/questions/377164/whats-your-preferred-pointer-declaration-style-and-why