指针入门必知:* 不只是乘法,还能“取内容”
一. 什么是指针?
先记住一句话:指针就是存放地址的变量。
int a = 10; int *p = &a; // p 里存的是变量 a 的地址p 就是个指针变量,它“指向”了 a。
二. 解引用操作符 * 是干什么的?
解引用就是“顺着地址找到那个房间,取出或修改里面的东西”。
int a = 10; int *p = &a; printf("%d\n", *p); // 输出 10 —— 解引用,拿到 a 的值 *p = 20; // 把 a 改成 20 printf("%d\n", a); // 输出 20这里的 *p 就等价于 a,你可以读取,也可以赋值。
三. 什么时候必须用解引用?
通过指针修改外部变量的值(函数传参)
访问动态分配的内存(malloc)
遍历数组(数组名退化为指针时)
void swap(int *x, int *y) { int temp = *x; // 解引用取值 *x = *y; *y = temp; }四. 常见误区
| 写法 | 含义 |
| int *p | 明一个指针变量(不是解引用) |
| *p = 5 | 解引用,修改指向的内容 |
| p = &a | 让 p 指向 a(不涉及解引用) |
*p在表达式中 | 解引用取值 |
关键:*在声明中是“指针标志”,在使用中才是“解引用操作符”。
五. 危险操作(千万别干)
int *p; *p = 10; // 错误!p 未初始化,指向未知地址(野指针)解引用之前,必须保证指针指向合法的、已分配的内存。
一句话总结
解引用 * = 通过地址找数据,读或写随你。
记住它,指针就算入门了!🎯
如果你觉得有帮助,欢迎点赞、收藏、评论,让更多人看到!