我已经在很多代码中看到了这个的混合版本.(顺便说一下,这适用于C和C++.)人们似乎用两种方式之一来声明指针,我不知道哪一个是正确的,如果它甚至是重要的.
第一种方法是将星号放在类型名称旁边,如下所示:
someType* somePtr;
Run Code Online (Sandbox Code Playgroud)
第二种方法是将星号放在变量名称旁边,如下所示:
someType *somePtr;
Run Code Online (Sandbox Code Playgroud)
这已经让我疯了一段时间了.是否有任何标准方法来声明指针?甚至指针是如何声明的?我之前使用过两个声明,并且我知道编译器并不关心它是哪种方式.然而,事实上,我已经看到以两种不同的方式宣告指针,这让我相信它背后有一个原因.我很好奇,如果任何一种方法在某些方面更具可读性或逻辑性,那我就错过了.
Joh*_*itb 117
没关系.现在有人会把这个问题作为一个骗局来解决,int* a
如果你在同一个声明中声明多个变量int *a
,而另一个人将会更好地反映代码的语法结构,那么其他人将展示如何破解方式,另一个人将展示Stroustrup喜欢int* a
这样的.
很多意见,但这里没有"正确"的方式.
Tyl*_*nry 100
这是一个偏好的问题,有点像一场神圣的战争,就像大括号一样.
风格
someType* somePtr;
Run Code Online (Sandbox Code Playgroud)
强调指针变量的类型.它本质上是在说" somePtr
指针的类型someType
".
风格
someType *somePtr
Run Code Online (Sandbox Code Playgroud)
正在强调指向数据的类型.它本质上是说"指向的数据类型somePtr
是someType
".
它们都意味着相同的东西,但它取决于创建指针时给定程序员的心理模型是否"聚焦",可以说是指向数据或指针变量.
把它放在中间(as someType * somePtr
)试图避免承诺任何一个.
Bri*_*ndy 51
没关系,这是个人喜好.
有些人喜欢将类型保持在一起:
int* p;
Run Code Online (Sandbox Code Playgroud)
其他人说它应该在变量旁边,因为以下内容:
int *p, x;//declare 1 int pointer and 1 int
int *p, *x;//declare 2 int pointers.
Run Code Online (Sandbox Code Playgroud)
随着时间的推移,你会忽略这一点并接受两种变化.
Lan*_*uck 22
差异的产生是因为C++在C之上增加了一个更强大的类型系统.AC程序员通常用"值"来思考
int *pValue;
Run Code Online (Sandbox Code Playgroud)
读取"pValue的取消引用是一个int",而C++程序员则在"类型"中思考
int* pValue;
Run Code Online (Sandbox Code Playgroud)
读取"类型pValue是指向int的指针"编译器当然看不到任何区别.但是你会发现在C++编程时,C程序员坚持使用"价值语义".
dte*_*eoh 18
我认为将星号放在变量名称旁边是更清楚的.
您可能会错误地声明someType* one, two;
它们都是指针,但只有变量one
是指针; two
只是一个someType
.声明为someType *one, *two
避免这个问题.
归档时间: |
|
查看次数: |
64175 次 |
最近记录: |