每个 depointer/dereference 语法使变量意味着什么?
What does each depointer/dereference syntax make the variable mean?
编辑:由于 int * x
、int* x
和 int *x
之间没有区别,我删除了该部分以更好地澄清我的困惑。
问题:
What are the differences between a pointer variable and a reference variable in C++? 的回答中解释了“指针”和“引用”之间的区别,但语法本身似乎根据上下文有不同的含义。
声明指针或引用时,*
和 &
修饰符使这些变量在后面表示什么意思?它们是指针、原始值、对象引用等吗
例如,因为这里的文字似乎让我失望:
void foo(int* x, int& y) {
assert(*x == ??);
assert(&x == ??);
assert(*y == ??);
assert(&y == ??);
}
这方面的规则非常简单。无论您在何处看到声明,无论是在 main
、some_namespace
、class 内还是在函数的参数部分,声明都具有相同的含义。要知道,每当你看到
type_name * variable_name
您正在声明一个指针。随处可见
type_name & variable_name
您正在声明引用。这里的间距无关紧要,int* foo
、int * foo
和int *foo
都声明了一个名为foo
的int*
。这里唯一棘手的一点是 *
或 &
适用于变量名,而不是类型。这意味着在
这样的代码中
int * foo, bar;
foo
和 bar
不是两个指针。 foo
是指向 int
的指针,而 bar
只是一个 int
。要制作 bar
和 int
你需要使用
int * foo, * bar;
并且负责声明。
使用,如果你看到
*variable_name
然后你通过 variable_name
间接寻址(调用一元 operator*
)。如果你看到
&variable_name
然后您将获得 variable_name
的地址,或调用 variable_name
类型的 operator&
。
编辑:由于 int * x
、int* x
和 int *x
之间没有区别,我删除了该部分以更好地澄清我的困惑。
问题:
What are the differences between a pointer variable and a reference variable in C++? 的回答中解释了“指针”和“引用”之间的区别,但语法本身似乎根据上下文有不同的含义。
声明指针或引用时,*
和 &
修饰符使这些变量在后面表示什么意思?它们是指针、原始值、对象引用等吗
例如,因为这里的文字似乎让我失望:
void foo(int* x, int& y) {
assert(*x == ??);
assert(&x == ??);
assert(*y == ??);
assert(&y == ??);
}
这方面的规则非常简单。无论您在何处看到声明,无论是在 main
、some_namespace
、class 内还是在函数的参数部分,声明都具有相同的含义。要知道,每当你看到
type_name * variable_name
您正在声明一个指针。随处可见
type_name & variable_name
您正在声明引用。这里的间距无关紧要,int* foo
、int * foo
和int *foo
都声明了一个名为foo
的int*
。这里唯一棘手的一点是 *
或 &
适用于变量名,而不是类型。这意味着在
int * foo, bar;
foo
和 bar
不是两个指针。 foo
是指向 int
的指针,而 bar
只是一个 int
。要制作 bar
和 int
你需要使用
int * foo, * bar;
并且负责声明。
使用,如果你看到
*variable_name
然后你通过 variable_name
间接寻址(调用一元 operator*
)。如果你看到
&variable_name
然后您将获得 variable_name
的地址,或调用 variable_name
类型的 operator&
。