c - 当我想更改变量的值时使用指针 *
问题描述
#include <stdio.h>
int main(void) {
int x = 5;
int y = 10;
int* px = &x;
int* py = &y;
printf("the adress of %d is %p.\n",x,px);
printf("the adress of %d is %p.\n",y,py);
*px = 8;//change the value at the adress of px
*py = 18;
//what happens if instead of *px = 8, just x = 8?
x = 99;
printf("the adress of %d is %p.\n",x,px);
printf("the adress of %d is %p.\n",y,py);
//so It did change, what's the point of using *px when changing the value?
return 0;
}
您好,我在学校开始学习C,遇到了一个可能非常简单的困难,但目前我不知道。我正在尝试更改 x 的值,我首先使用方法 *px = 8 来更改它。但是在那之后我使用了x = 99,它也改变了,所以我不知道它们之间有什么区别。我感谢任何反馈,谢谢!
解决方案
Q:我先用*px = 8的方法改了
A:“x”和“*px”的值都变成了“8”,对吗?
问:但在那之后我使用 x = 99,它也改变了
- 答:酷。所以现在 "x" 和 "*px" 都是 99。这是你所期望的,对吗?
问:所以我不知道它们之间有什么区别。
在这个例子中,它们都是等价的。他们都完成了完全相同的事情。
为什么要使用指针?因为变量“x”与特定的内存位置相关联:您无法更改它。
另一方面,如果需要,可以在运行时更改指针“px”以指向不同的内存位置。
为什么有用?有很多不同的原因。例如:
当你malloc()动态内存时,系统会给你一个指针。你不知道也不关心它在内存中的位置:你只是使用它。
经常需要指针来遍历链表中的元素
递增 (++) 和递减 (--) 指针的能力简化了许多算法
等等等等。
您可能会发现这些文章很有帮助:
推荐阅读
- vim - 匹配具有不同前面零宽度模式的相同字符串
- drupal - 在 Drupal 8 中以编程方式保存 geofield
- android - 在 Samsung Galaxt S9 (Oreo) 上显示安全异常
- xml - 在命名空间定义中使用变量
- botframework - Botframework WebChat:无法在其他聊天/浏览器上开始新的和干净的对话
- php - Ajax 获取表单 PHP MySQL 的提交按钮的动态 id
- nfc - 如何开始与 ACR122U-A9 NFC 读写器交互?
- java - java将结果集转换为列表
- cordova - 基于 Cordova 的应用程序启动画面延迟不适用于 Windows 10 版本
- java - 基于 java 的项目环境设置的 sonar.java.binaries 属性中的错误