用人话讲讲指针

大家好,我是兔飞飞!今天学习指针。强烈建议先搞懂取地址,指针就非常好理解了!看我前一篇文章:取地址和指针的关系

指针就像C语言里的“导航员”,它专门负责记住一个“地址”,然后通过这个地址帮你找到目标对象。目标可以是一个普通变量、数组、甚至是另一个指针。简单来说:

指针是什么?

指针是一个变量,它存储的是“地址”,而不是具体的值。

为什么需要指针?

  • 间接操作:通过指针可以间接操作某个变量,类似于你有个遥控器,按下按钮就能改电视台。
  • 节省资源:传递数据时,可以只传地址,不需要复制整个数据。
  • 动态内存管理:用指针可以控制内存的分配和释放,适合操作复杂数据结构。

理解指针的几个核心点

  1. 指针存的是什么?
    指针存的是某个变量的“地址”(就是内存中的一个位置)。

    比如:

    int a = 10;    // a 是变量,存储值 10
    int *p = &a;   // p 是指针,存储的是 a 的地址
    
    • a 是变量,存的值是 10
    • p 是指针,存的是 a 的地址(比如 0x7ffe...)。
  2. 怎么通过指针操作变量?
    指针能通过“解引用”来操作它指向的变量。解引用用 *,就像从地址找到内容。

    *p = 20;  // 把指针 p 指向的变量改成 20
    printf("%d\n", a);  // 输出 20
    
  3. 指针的本质
    指针是“间接引用”的工具,它本身存的是地址,但可以通过解引用操作地址对应的值。


一个简单的例子

用指针修改变量值:

#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

指针可以做什么?

  1. 动态内存管理
    通过指针申请或释放内存,比如 mallocfree

  2. 数组和字符串操作
    数组名本身就是指针,指针可以用来遍历或操作数组。

    int arr[] = {1, 2, 3};
    int *p = arr;  // p 指向数组第一个元素
    printf("%d\n", *(p + 1));  // 输出第二个元素 2
    
  3. 函数参数传递
    指针可以把地址传递给函数,函数就能直接操作原变量(而不是复制一份)。


打个比方

指针就像房产中介,房产地址就像内存地址:

  • 变量是你的“房子”,存着值。
  • 指针是“中介”,它拿着房子的地址。
  • 解引用(*)就像拿钥匙开门,直接去操作房子里的东西。

所以,指针并不直接存值,而是告诉你“值在哪”,让你去找!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值