我目前正在课堂上学习指针和参考,这有点令人困惑。我们被分配了这个问题用于家庭作业,我想知道是否有人可以纠正我?
据我所知,到目前为止,*声明了一个指针,并且&申报参考?因此,如果将指针变量设置为等于引用,那么指针变量是否存储该地址的值?当你分配新的时,你将内存分配给一个变量,但事后我不确定。我从C ++读取信息,但我正在努力确保我确实知道如何应用这些信息。
谢谢
答案 0 :(得分:1)
a(52)
给出整数值52。
b(22)
给出b整数值22。
c(a)
给出c的整数值,意思是52。
&m(a)
,你有a的值,所以m与a的地址相同。
*x(&b)
在x处,您可以指定b的地址值。
我会说你的作业是正确的。
答案 1 :(得分:0)
int a(52)
声明一个值为52的int。
int b(22)
声明一个值为22的int。
int c(a)
声明一个值为a
的int,所以52。
int &m(a)
声明对int a
的引用。由于a
的值为52,因此m
的值为52.但是,如果更改a
的值,则m
的值也会更改。例如:
int a = 52;
int &m(a); // Value of m is 52
a = 40; // Value of m is 40
int *x(&b)
向x
的内存位置声明指针b
。行为类似于上面的参考。由于b
的值为22,因此取消引用x
会得到b
的值。如果更改了b
,则取消引用x
时返回的值也会更改,但地址x
不会更改。例如
int b = 22;
int *x(&b);
std::cout << x; // Some hex number, say 0x7fff79205a6c, which is the address x points to
std::cout << *x; // will print 22, since b is 22
b = 40;
std::cout << x; // Some hex number, 0x7fff79205a6c, which is still the address x points to
std::cout << *x; // will print 40, since b is 40
评论问题后更新。
如果通过为其指定另一个指针来创建指针,则该指针将指向与指定它的指针相同的地址。例如:
int b(22);
int *x(&b); // Say this again points to 0x7fff79205a6c
int *y = b;
然后
std::cout << x; // 0x7fff79205a6c
std::cout << y; // 0x7fff79205a6c
和
std::cout << *x; // prints 22
std::cout << *y; // prints 22
然后修改b
不会更改x
和y
指向的地址,但取消引用x
或y
将返回{的新值{1}}。
此外,修改b
或x
指向的值会产生以下影响:
y