单个指针可以指向两个或多个变量吗?
Can a single pointer point to two or more variables
例如,下面的这段代码我最近才开始使用指针。
#include<stdio.h>
int main(){
int x = 3;
int y = 7;
int *ip; //creating int pointer ip
ip = &x; // ip storing the address of x
printf("Address of x: %dn", ip);
*ip = 5;
printf("Address of x: %dn", ip);
ip = &y; // ip also storing the address of y
printf("Address of y: %dn", ip);
*ip += 11;
x += *ip;
printf("%dn", x); // value is 23
printf("%dn", y); // value is 18
printf("%dn", *ip); // value is 18
}
代码运行良好,我想知道为什么。我在想,在指针开始保存变量的地址后,y
指针指向x
时使用指针所做的更改应该恢复,因为它不再保存地址。
指针可以指向两个或多个变量吗
不可以,单个指针只能指向一件事。那个东西可以是int
,或者数组(或数组的元素),或者其他一些东西。
但是,您可以从此获取指针并使其指向其他内容!就像一个不同的int
,或者数组的不同元素。
在这里,您已经使用=
赋值运算符完成了此操作:
ip = &y;
现在它不再指向x
;而是指向y
。
我在想,在指针开始保存变量 y 的地址后,指针指向 x 时使用指针所做的更改应该恢复,因为它不再保存地址。
这是对指针作用的误解。指针没有任何您通过它进行的任务的记忆。它甚至不知道他们。它不是一个蒙版,它使用仅在指针与该对象相关的持续时间内可观察到的值暂时扼杀现有对象。这是一个指针。它指向事物。
它所做的只是提供对x
(以及更高y
)的访问。就是这样。时期。无论你对x
(以及后来的y
)做了什么,都是你和x
(以及后来的y
)之间的事情。稍后重新绑定指针对这些操作绝对没有"撤消"影响。
为什么代码有效?因为你遵循了语言的规则,写了一个有效的程序。
指针是值的引用,喜欢房间号作为房间。int *ip;
表示 ip 是一个房间号。
ip = &x;
意味着现在x
的房间数量ip
。*ip = 5;
表示在房间中设置5
哪个数字是x
,并且x = 5;ip = &y;
变化ip
是现在y
房间的数量。
很明显,你被ip = &x;
和ip = &y;
陈述所困扰printf("x's address is %x, y's address is %x, ip is %xn", &x, &y, ip)
。
- 我可以创建一个包含两个变量的 for 循环,但时间复杂度仍然为 O(n) 吗?
- 命令行参数,cant 或两个变量
- 在 for 循环中更新两个变量时遇到问题C++
- C++ 编译时在两个变量之间交替
- C++ 如何在包含两个变量的结构中存储与变量不同数量的值?
- 为什么一个接一个声明的两个变量在内存中不相邻?
- 为什么动态分配的两个变量的内存位置不是连续的?
- 是否可以在C++中使用宏交换两个变量的出现?
- 计算机如何分配两个变量,我们如何计算两个变量之间的距离?
- 正确证明C 中的两个变量合理(我想将它们视为一个变量)
- 可视C 编译器将相同的存储位置提供给两个变量
- 尝试使用 {} 和 std::make_pair() 交换两个变量时的行为不同
- 在rootframework中的根文件中编写两个变量
- 最短路径,带有两个变量
- 加入两个变量和LCD打印
- 在循环中声明两个变量以逆转字符串?在C 中
- 具有两个变量的"for"循环,一个变量每次迭代递增,每隔一次迭代递增
- 如何在C++中使用一个类中两个变量的值
- 仅在C 中的一个变量上,两个变量函数的数值集成(使用数值配方库)
- 如何在我存储的两个变量之间生成随机数