关于指针的定义格式
两种方式都是对的,编译器都支持。一般编程规范都推荐*号挨着指针变量,为的是避免在一行定义多个指针变量时不小心出错,例如: int *p,q; // 这样读起来容易识别q是整形变量不是指针 int* p,q; // 这样比较容易误解p和q都是指针
比如我们定义一个整型指针:
int *p;
星号和p是挨着,与int分离。
那么可不可以这样定义呢?
int* p;
就是星号与int挨着,与p分离。
这样定义,格式对不对?
int *p;
星号和p是挨着,与int分离。
那么可不可以这样定义呢?
int* p;
就是星号与int挨着,与p分离。
这样定义,格式对不对?
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
cyd411 社区成员 2014-10-29
这个是编程规范 你搜下编程规范,那里有讲
赞
call_from_dream 2014-10-29
*可以:1,紧挨着变量类型,如 int* p; 2,紧挨着变量,如 int *p; 3,两个都不挨着,也是可以滴,如 int * p;
赞
tick_guo 2014-10-29
恩……,这个重点
赞
Mortred_cp 2014-10-29
都一样的。。
赞
walter2001 2014-10-28
两种方式都是对的,编译器都支持。一般编程规范都推荐*号挨着指针变量,为的是避免在一行定义多个指针变量时不小心出错,例如: int *p,q; // 这样读起来容易识别q是整形变量不是指针 int* p,q; // 这样比较容易误解p和q都是指针
赞
追梦浮云 2014-10-28
这两种情况对于编译器来将是一样的,只是让阅读你代码的人看起来更爽一些。比如 int *p, q; 和 int* p, q; 这两种定义都是p为int类型指针, q为int类型,阅读你代码的人可能会把第二种情况的p和q误解释为int 类型指针。
赞
mujiok2003 2014-10-28
加空格只是为了代码便于人阅读, 编译器不需空格。
赞
mymtom 社区成员 2014-10-28
从语法上来说,* 挨着变量是比较容易理解的。 以 int * p; 为例 int 是 type-specifier -> declaration-specifiers *p 是 declarator -> init-declarator -> init-declarator-list 3.5 DECLARATIONS Syntax declaration: declaration-specifiers init-declarator-list<opt> ; declaration-specifiers: storage-class-specifier declaration-specifiers<opt> type-specifier declaration-specifiers<opt> type-qualifier declaration-specifiers<opt> init-declarator-list: init-declarator init-declarator-list , init-declarator init-declarator: declarator declarator = initializer ================ 3.5.2 Type specifiers Syntax type-specifier: void char short int long float double signed unsigned struct-or-union-specifier enum-specifier typedef-name =========================== 3.5.4 Declarators Syntax declarator: pointer<opt> direct-declarator direct-declarator: identifier ( declarator ) direct-declarator [ constant-expression<opt> ] direct-declarator ( parameter-type-list ) direct-declarator ( identifier-list<opt> ) pointer: * type-qualifier-list<opt> * type-qualifier-list<opt> pointer type-qualifier-list: type-qualifier type-qualifier-list type-qualifier parameter-type-list: parameter-list parameter-list , ... parameter-list: parameter-declaration parameter-list , parameter-declaration parameter-declaration: declaration-specifiers declarator declaration-specifiers abstract-declarator<opt> identifier-list: identifier identifier-list , identifier
赞
wpsperson 2014-10-28
楼上说的都很对!
赞
dbzhang800 社区成员 2014-10-28
靠哪一个都行了,或者两个都不靠也可以。 但是,如果一行定义多个变量的话,*靠近变量可能更容易理解。 比如下面等价的写法 int *p1, i1; int* p1, i1; 或 int *p1, *p2, i1, i2, *p3, i3; int* p1, * p2, i1, i2, * p2, i3;
赞
buyong 2014-10-28
两种都对,只是书写不同,编译器认为是一样的
赞
u013224530 社区成员 2014-10-28
都可以 各种风格而已
赞
arthaslonely 2014-10-28
所以不建议在一个声明中一起写两个以上的变量。。。