C 两个指针可以使用相同的地址吗?(代码说明)
有人能给我解释一下这个代码吗?特别是第八行,我认为它在指针2中分配指针1的地址,这会使指针2指向值1吗C 两个指针可以使用相同的地址吗?(代码说明),c,pointers,C,Pointers,有人能给我解释一下这个代码吗?特别是第八行,我认为它在指针2中分配指针1的地址,这会使指针2指向值1吗 请有人帮帮我。谢谢。ptr2=ptr1将ptr1的值(即i1的地址)分配给ptr2。这使得ptr2指向与ptr1指向相同的对象,即变量i1。ptr2指向的位置中的值确实是1,但是说ptr2指向值1似乎很奇怪。ptr2的值是一个内存位置,该位置当前包含一组位(当解释为int时)表示值1您正在做的是将ptr1的值写入ptr2的地址中。可视化:你在ptr1中有一个箭头,上面写着“如果你需要value
请有人帮帮我。谢谢。
ptr2=ptr1
将ptr1
的值(即i1
的地址)分配给ptr2
。这使得ptr2
指向与ptr1
指向相同的对象,即变量i1
。ptr2
指向的位置中的值确实是1
,但是说ptr2
指向值1
似乎很奇怪。ptr2
的值是一个内存位置,该位置当前包含一组位(当解释为int时)表示值1
您正在做的是将ptr1
的值写入ptr2
的地址中。可视化:你在ptr1
中有一个箭头,上面写着“如果你需要value1,你可以在那里找到它”。在复制之后,ptr2
现在还有一个箭头,上面写着“如果您需要value1,您可以在那里获得它”。因此,您确实正确地假设ptr2
指向值1
是的,多个指针可以指向同一位置,这种情况称为。虽然您提到的这行代码确实使ptr2
指向值1,但更重要的是,它指向i1
的存储,就像ptr1
一样。因此,此时您有三个不同的名称可以访问i1
:*ptr1
、*ptr2
和i1
本身。因此,最后两行确实具有顺序依赖关系,并且程序在i1
和i2
中都以3结尾 理解C语言中的指针是解决问题的方法
int i1;
int i2;
int *ptr1;
int *ptr2;
i1 = 1;
i2 = 2;
ptr1 = &i1;
ptr2 = ptr1;
*ptr1 = 3;
i2 = *ptr2;
指针基本上是一个变量,其值(R值)是另一个变量的地址(L值)
变量有一个L值(存储它的内存地址)和一个R值(数据值)
所以
表示您正在将ptr1的R值分配给ptr2的R值。Ptr1的R值包含i1的L值,因此:
ptr2 = ptr1;
coutptr2=ptr1
将ptr1
的值(即i1
的地址)分配给ptr2
。网上有许多指针教程解释指针如何工作以及幕后发生了什么。
ptr2 = ptr1;
cout << ptr2; /* print i1's L-value (a memory address) */
cout << *ptr2; /* print 1, that is i1's R-value */