C++ 指针声明的int*指针与int*指针
可能重复:C++ 指针声明的int*指针与int*指针,c++,C++,可能重复: 指针的语法对我来说从来没有意义。我注意到这两个选项都适用于声明指针。我应该使用哪一种?两者之间没有区别。使用你更喜欢的一个。它们都是相等的。选择您最喜欢的代码,或者如果您正在编辑现有代码,请遵循样式指南。间距与解析无关。有3个标记:int、*和pointer。对于C编译器来说,空格是无效的 如果在同一行上有多个声明,则差异更为重要: int* p1, q1; // p1 is a pointer to int, q1 is an int. int *p2, *q2; // p
指针的语法对我来说从来没有意义。我注意到这两个选项都适用于声明指针。我应该使用哪一种?两者之间没有区别。使用你更喜欢的一个。它们都是相等的。选择您最喜欢的代码,或者如果您正在编辑现有代码,请遵循样式指南。间距与解析无关。有3个标记:int、*和pointer。对于C编译器来说,空格是无效的 如果在同一行上有多个声明,则差异更为重要:
int* p1, q1; // p1 is a pointer to int, q1 is an int.
int *p2, *q2; // p2 and q2 are both pointers to ints.
将星号放在变量名附近可能会帮助您记住这一点。但是最好只在自己的行中声明每个变量。您也可以使用
int * pointer
这只是个人喜好的问题。C++编译器会知道你的意思,只要你有正确的语法。 这是一个风格问题,所以你应该使用与其他代码相同的风格(一致)。如果只有你,选你喜欢的
个人会为
int*pointer
争论,因为int*a,b代码>表示与int*a相同;int b代码>非int*a;int*b代码>,正如人们所想,但这是一个公认的边缘案例。它们是等价的,是个人偏好的问题
为了完整起见,我想补充一点,如果您要声明两个指针,您必须编写:
int *a, *b;
如果您编写int*a、b
,则最终会得到一个指向int
的指针,以及一个来自Microsoft多功能一体式代码框架编码标准的int
:
指定指针类型/变量时,应在*字符和类型之间留出一个空格,但“*”字符和变量之间不应留空格。设置此规则是为了在代码中保持一致和统一
不管你喜欢哪一个,只要你与你正在工作的项目的其他部分的格式保持一致。或者:不久前,我在这里看到一个问题,海报把这两者混在了一起。对我来说,变量是指针,而不是类型,这让我使用第二种选择。但这可能与我是在老式C语言上“长大”的有关:-)我正在努力学习C语言,我倾向于同意马克的观点。考虑到int p1,q1
将声明两个整数,int*p1,q1
给了我一个指向一个整数和一个整数的指针,这让我很困惑。如果有人在看c代码,但不知道语法,那么两行代码就最好了,也不会那么混乱<代码>int*p1;int q1代码>。如果*p1
自动指向q1
的地址,我可以看到它有用处,但它仍然需要分配。如果您不知道语法的这个细节,充其量int*p1,q1
对您来说可能是模棱两可的。一行可能更短,但两行对我来说更干净、更清晰。