指针

一、指针的定义

指针(Pointer):存储变量内存地址的特殊变量,通过它能直接访问和操作对应内存单元的数据。

#include <bits/stdc++.h>
using namespace std;

int x = 10, *p;  // p是整型指针变量(int*)

int main(){
    p = &x;       // &取地址运算符
    *p = *p + 1;  // *解引用运算符
    // *p++ 错误,因为++优先级高于*
    // (*p)++ 正确,先解引用再自增
    return 0;
}

关键点:

  • &:获取变量内存地址
  • *:声明指针类型或解引用指针
  • 指针类型必须与指向变量类型匹配

二、指针的核心应用

  1. 函数参数传递中的指针
    指针允许函数修改外部变量的值,突破值传递的限制。
#include <bits/stdc++.h>
using namespace std;

int x = 1, p = 1;

void fun1(int x){    // 值传递
    x++;             // 只修改局部副本
}

void fun2(int *p){   // 指针传递(地址传递)
    (*p)++;          // 直接修改原变量
}

int main(){
    fun1(x);         // x不变
    fun2(&p);        // p变为2
    return 0;
}

内存模型解析:

  1. 每个函数有独立的栈帧存储局部变量

  2. 值传递:创建参数值的副本

  3. 指针传递:共享同一内存地址

  4. 指针与数组的关系
    数组名本质是指向首元素的常量指针。

int a[5] = {1,2,3,4,5};
int *p = a;      // 等价于 &a[0]
*(p + 2) = 10;   // 修改arr[2]
posted @ 2025-06-21 10:21  Jason227  阅读(8)  评论(0)    收藏  举报