初始化后是一个变量引用?

时间:2015-01-16 11:01:31

标签: c++

在这个例子中,x是什么?它是参考吗?

int x  = 5;   //What is x?
int &y = x;   //This is an alias for x
int *z = &x;  //This is a pointer to x

4 个答案:

答案 0 :(得分:5)

x int变量。 y 是对int(x)的引用,而 z 是指向int(x)的指针。

答案 1 :(得分:1)

你感到困惑。

x是一个int变量。它是int类型的具体对象。

是一个参考。它基本上是一个已经为你服务的指针。您可以将其视为x。

z是指向x的指针。它保存x的内存地址,因此您可以根据需要访问它。它需要被尊重。

答案 2 :(得分:0)

您可以将“非参考变量”理解为可以从中获取参考的内容。每个变量“包含”一个“引用”,它是它的语言接口,以及内部表示,它是一个保存其值的内存。

如果你创建一个“引用变量”并用一些普通变量初始化它,你将创建一个新的“引用”,即另一个“语言接口”(一个单独的名称),它固定在同一个内部表示中。源变量。请注意,它与变量的内部表示绑定,而不是变量本身。

指针简洁指向表示本身。如果你做“指针取消引用”(使用* z表达式),指向类型是“引用”的潜在类型(即变量的语言接口)。

变量'x'的表达式的实际类型是'int&'。如果将它传递给函数或赋值给另一个变量(在C ++中它们都被理解为“函数调用”),那么将会转换为int&到int。但请注意,如果将其传递给在该位置使用模板参数化类型的函数,并将其指定为“T x”(而不是“T& x”),那么T将被选为'int'(不是int&),无论你传递一个立即的int值还是一个int类型的变量。

答案 3 :(得分:-2)

X是整数​​变量。 int& y = x; //被编译器视为int * const y =& x 因此,引用运算符用作变量的名称别名,并降低了开发人员解除引用值的复杂性。