指针和取地址的关系(理解指针必看)

大家好,我是兔飞飞!今天学习指针,这是编程最重要的概念,先理解了取地址(&),再学习指针(*)就是手拿把掐哈哈哈!

指针和&符号(取地址符)关系密切,因为&是用来获取变量的内存地址,而指针正是用来存储这个地址的。我们可以把它理解为一套完整的配合机制:

  1. & 获取地址

    • & 是取地址操作符,用于获取变量的地址。比如:
      int a = 10;
      int *p = &a;  // 用 & 获取变量 a 的地址,赋值给指针 p
      

    在这段代码中:

    • a 是一个普通变量,值为 10
    • &a 是变量 a 在内存中的地址。
    • p 是一个指针,用来保存 a 的地址。

  1. 指针存储地址

    • 指针就是一种特殊的变量,存储的不是具体的值,而是地址。通过指针可以间接操作地址指向的内容。
    int a = 10;
    int *p = &a;  // p 存储 a 的地址
    *p = 20;      // 修改指针指向的内容,相当于修改 a 的值
    printf("%d\n", a);  // 输出 20
    

    解析:

    • p = &a:让指针 p 存储变量 a 的地址。
    • *p = 20:通过解引用操作符 *,修改 p 所指向的地址(即变量 a)的值。

  1. & 和指针的关系核心
    • &:取地址,让普通变量与指针“对接”。
    • 指针:存地址,存储 & 提供的地址,作为桥梁。
    • *:解引用,通过指针访问或操作地址指向的值。

示例:结合指针和&

下面是一个常见的例子:

#include <stdio.h>

void changeValue(int *p) {
    *p = 100;  // 改变指针指向变量的值
}

int main() {
    int x = 10;
    printf("Before: %d\n", x);

    changeValue(&x);  // 用 & 获取 x 的地址,传给函数
    printf("After: %d\n", x);

    return 0;
}
解析:
  1. &x:把变量 x 的地址传递给指针参数 p
  2. *p = 100:通过指针 p 修改 x 的值。
  3. 函数修改的值直接作用在变量 x 上,因为指针操作的是地址。

总结关系

  1. & 提供 变量的地址
  2. 指针用来 存储这个地址
  3. 通过 * 解引用,可以 操作地址对应的值

它们像一个三人组:

  • & 是消息发送者(传递地址)。
  • 指针是邮差(保存地址)。
  • * 是拆信人(访问或修改地址对应的内容)。

理解这点,指针的用法会轻松很多!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值