大家好,我是兔飞飞!今天学习指针。强烈建议先搞懂取地址,指针就非常好理解了!看我前一篇文章:取地址和指针的关系
指针就像C语言里的“导航员”,它专门负责记住一个“地址”,然后通过这个地址帮你找到目标对象。目标可以是一个普通变量、数组、甚至是另一个指针。简单来说:
指针是什么?
指针是一个变量,它存储的是“地址”,而不是具体的值。
为什么需要指针?
- 间接操作:通过指针可以间接操作某个变量,类似于你有个遥控器,按下按钮就能改电视台。
- 节省资源:传递数据时,可以只传地址,不需要复制整个数据。
- 动态内存管理:用指针可以控制内存的分配和释放,适合操作复杂数据结构。
理解指针的几个核心点
-
指针存的是什么?
指针存的是某个变量的“地址”(就是内存中的一个位置)。比如:
int a = 10; // a 是变量,存储值 10 int *p = &a; // p 是指针,存储的是 a 的地址a是变量,存的值是10。p是指针,存的是a的地址(比如0x7ffe...)。
-
怎么通过指针操作变量?
指针能通过“解引用”来操作它指向的变量。解引用用*,就像从地址找到内容。*p = 20; // 把指针 p 指向的变量改成 20 printf("%d\n", a); // 输出 20 -
指针的本质
指针是“间接引用”的工具,它本身存的是地址,但可以通过解引用操作地址对应的值。
一个简单的例子
用指针修改变量值:
#include <stdio.h>
int main() {
int x = 5;
int *p = &x; // 指针 p 保存了变量 x 的地址
printf("x 的值是: %d\n", x);
*p = 10; // 修改指针指向的变量值
printf("修改后 x 的值是: %d\n", x);
return 0;
}
输出:
x 的值是: 5
修改后 x 的值是: 10
指针可以做什么?
-
动态内存管理:
通过指针申请或释放内存,比如malloc和free。 -
数组和字符串操作:
数组名本身就是指针,指针可以用来遍历或操作数组。int arr[] = {1, 2, 3}; int *p = arr; // p 指向数组第一个元素 printf("%d\n", *(p + 1)); // 输出第二个元素 2 -
函数参数传递:
指针可以把地址传递给函数,函数就能直接操作原变量(而不是复制一份)。
打个比方
指针就像房产中介,房产地址就像内存地址:
- 变量是你的“房子”,存着值。
- 指针是“中介”,它拿着房子的地址。
- 解引用(
*)就像拿钥匙开门,直接去操作房子里的东西。
所以,指针并不直接存值,而是告诉你“值在哪”,让你去找!

被折叠的 条评论
为什么被折叠?



