非常常见的是,声明指针的语义准确方法是
int *x;
Run Code Online (Sandbox Code Playgroud)
代替
int* x;
Run Code Online (Sandbox Code Playgroud)
这是因为C看作*x是一个int,而不是x一个int指针.
这很容易证明
int* a, b;
Run Code Online (Sandbox Code Playgroud)
其中a是int指针,而bint是int.
stackoverflow.com上至少有5个重复的问题,讨论这个问题的指针.但是参考文献怎么样?
Bjarne Stroustrup说:
一个
typical C programmer写int *p; 并在解释中*p is what is the int强调语法,并可能指向C(和C ++)声明语法来证明样式的正确性。实际上,*绑定到语法中的名称p。一个
typical C++ programmer写int* p;并解释它p is a pointer to an int强调类型。实际上,p的类型为int *。我显然更喜欢这种强调,并认为它对于正确使用C ++的更高级部分非常重要。
在声明指针变量或参数时,可以在类型或变量名称旁边放置星号(或号)。
最重要的事情是在单个文件中一致地执行此操作。
// These are fine, space preceding.
char *c;
const int &i;
// These are fine, space following.
char* c;
const int& i;
Run Code Online (Sandbox Code Playgroud)
多亏了“模板类型定义”,您可以以(可以说)更好的方式声明多个引用:
template<typename T> using ref = T&;
int a, b;
ref<int> ar = a, br = b;
Run Code Online (Sandbox Code Playgroud)
在研究这个问题时,我已经找到了答案:
将&要写入的需求就像*。
演示代码类似于指针演示代码:
int main() {
int a = 0;
int b = 1;
int& ar = a, br = b;
br = 2;
return b;
}
Run Code Online (Sandbox Code Playgroud)
这将返回1,这意味着它ar是一个int引用,而br只是一个整数。
| 归档时间: |
|
| 查看次数: |
1699 次 |
| 最近记录: |