c++中指针*号的位置

tendzzss 2010-11-17 10:51:00
int *a;是定义一个指针
int* a;也是
请问这2个有哪些却别呢
可不可以在所有使用int *的地方都使用int* 来代替(函数指针除外)
...全文
1292 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
suhuaiqiang_janlay 2010-11-17
  • 打赏
  • 举报
回复
都可以啊。。。一样的意思,没有任何区别。
奔跑吧猴哥 2010-11-17
  • 打赏
  • 举报
回复
根据团队的规范来
zxzxghgh 2010-11-17
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 wangjunsheng 的回复:]
对编译器而言
所有空格都被忽略
int *p;
int* p;
在 编译器眼里就是 int*p;

有人认为指针是类型的一部份,所以int* 写在一起,这是一种编程风格
这样声明多个变量时得多加注意
int* p1, p2;
p2 是个整数 而不是指向int的指针
typedef int* int_ptr;
int_ptr p1, p2;
这样 p1 p2 均为指针
[/Quote]
正解
keiichi0701 2010-11-17
  • 打赏
  • 举报
回复
应该没有什么区别吧
乃不知有汉 2010-11-17
  • 打赏
  • 举报
回复
对编译器而言
所有空格都被忽略
int *p;
int* p;
在 编译器眼里就是 int*p;

有人认为指针是类型的一部份,所以int* 写在一起,这是一种编程风格
这样声明多个变量时得多加注意
int* p1, p2;
p2 是个整数 而不是指向int的指针
typedef int* int_ptr;
int_ptr p1, p2;
这样 p1 p2 均为指针
qq120848369 2010-11-17
  • 打赏
  • 举报
回复
这个不叫习惯,这是错误。
  • 打赏
  • 举报
回复

int* a;
int *a;


没有区别 习惯问题。
qq120848369 2010-11-17
  • 打赏
  • 举报
回复
int *a; 意思是a是指针变量.
int* a,意思就不明确了,要看上下文了.
失落的凡凡 2010-11-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wandoutoushu 的回复:]

补充下,这样还是有区别的,int *a,b; int* a,b;不过我一行之定义一个变量一般
[/Quote]

哥, 这样没区别。
Daveee 2010-11-17
  • 打赏
  • 举报
回复
补充下,这样还是有区别的,int *a,b; int* a,b;不过我一行之定义一个变量一般
tiannuosoft 2010-11-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 luciferisnotsatan 的回复:]
都一样,没区别。
不过建议写成 int *a;


int* a, b; a是指针,b不是
int *a, *b 都是指针
[/Quote]


说的好!看个人习惯!
Daveee 2010-11-17
  • 打赏
  • 举报
回复
没区别,个人书写习惯,仅是美观问题
失落的凡凡 2010-11-17
  • 打赏
  • 举报
回复
int *a;
int* b;
int * c;
甚至
int*d;
都是可以的。*号前后有没有空格不重要,只是一个美观问题。我的建议是用第一种。因为有这样连续的定义时:

int *a, b;
我们能直观的了解到, a 是一个指针, b是一个int变量。

int* a, b;
容易让人误解 a,和b都是指针。

当然, 我更推荐一行只定义一个变量。
dengqibin 2010-11-17
  • 打赏
  • 举报
回复
说得对,看你的习惯了,一般都是int *a, *b;这种写法多[Quote=引用 1 楼 luciferisnotsatan 的回复:]
都一样,没区别。
不过建议写成 int *a;


int* a, b; a是指针,b不是
int *a, *b 都是指针
[/Quote]
elated 2010-11-17
  • 打赏
  • 举报
回复
语义是一样的,觉得还是写在变量名前面好点,看个人习惯了
luciferisnotsatan 2010-11-17
  • 打赏
  • 举报
回复
都一样,没区别。
不过建议写成 int *a;


int* a, b; a是指针,b不是
int *a, *b 都是指针
hukui161 2010-11-17
  • 打赏
  • 举报
回复
int *P 这样写好点,没有区别习惯而已。
Zeecool 2010-11-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 milkylove 的回复:]
int *a;
int* b;
int * c;
甚至
int*d;
都是可以的。*号前后有没有空格不重要,只是一个美观问题。我的建议是用第一种。因为有这样连续的定义时:

int *a, b;
我们能直观的了解到, a 是一个指针, b是一个int变量。

int* a, b;
容易让人误解 a,和b都是指针。

当然, 我更推荐一行只定义一个变量。
[/Quote]
同意
FrankHB1989 2010-11-17
  • 打赏
  • 举报
回复
指针、数组和函数等构造类型及其实例的声明/定义的中缀语法是C最蛋疼的地方之一。词素和语序杂糅却没有带来中缀算术表达式那样明确方便的效果,反倒明显给人工编写解析器制造负担。(像Doxygen之类的,有些组合就没办法正确解析。)类型和实例无法经过空白符分隔而丧失了一些直观性,对于人类阅读者而言,要么效率降低,要么容易出错;对于程序而言增加了设计难度。作为对比,其它一些类C语言(如C#),就明确不采用int a[];这样的语法。
FrankHB1989 2010-11-17
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 qq120848369 的回复:]

这个不叫习惯,这是错误。
[/Quote]
这种没有指出错误在哪里的说法才是错误。
无论是int* a;还是int *a;都是合法的声明,只要a不和当前命名空间中已经声明的其它类型对象重复。
int*,表示一个类型,这个类型是指向int类型实体的指针类型。在int *a;这种声明风格中,int表示的类型不是声明的对象的类型,而是构成对象类型的一部分。
int *的写法照顾C风格的指针声明。int *a, *b;相当于int* a;int *b;,而int *a, b;相当于int* a;int b;。如果能保证一行一个声明,那么建议写成int* a,这样意义更明确;除非是为了保持和旧代码风格一致。
当然,更蛋疼一点可以用int * a;这样的写法。
加载更多回复(6)

65,171

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧