在这个例子中,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
答案 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 因此,引用运算符用作变量的名称别名,并降低了开发人员解除引用值的复杂性。