指针运用(1)

保持空杯心态,在了解的基础上明白,继而熟悉,终于熟练。

今天分享的是c语言指针的部分用法:

一、一个简单的例子切入指针

int a = 5;
int *ptr = &a;

非常简单的指针的声明和初始化,但是你对此认识多少?是否在学习指针的时候有过疑问?

解释:

  • int a = 5;: 这是一个整数变量 a,其值为 5。
  • int *ptr = &a;: 这是一个指针变量 ptr,它被初始化为 a 的地址。

如果你曾经对指针绕晕过,不知道你有没有过这样的疑问:ptr? *? int? *ptr? int* ptr? int *ptr?

int : 数据类型

ptr :是一个指向 int 类型的指针,它用于存储 int 类型变量的地址。 

*:是指针变量

ptr:变量名称(如果你喜欢可以是阿猫阿狗,但要注意命名规范)

int* ptr = int *ptr :含义和用法相同,只是写法不同,都代表名为ptr是一个指向int类型的指针,用于存储地址。

二、进一步了解指针

在学习指针的过程中,相信你肯定不止于一次看见过“*”这个符号,上面的切入只是一个*出现,那多个*出现,你知道怎么消化吗?

1. 多级指针

又称指向指针的指针。多级指针可以用于访问和修改指针变量。通过指向指针的指针,可以在函数中修改指针的值。

例如:int **p 是一个指向 int * 类型的指针,而 int *p 是一个指向 int 类型的指针。

#include <stdio.h>

// 函数声明
void setPointer(int **ptr);

int main() {
    int value = 42;   // 定义一个整数变量
    int newValue = 99; // 定义另一个整数变量
    int *p = &value; // 定义一个指针并初始化为指向 value 的地址

    // 打印 p 当前指向的值
    printf("Before function call: *p = %d\n", *p);

    // 调用函数,传递指针 p 的地址
    setPointer(&p);

    // 打印 p 现在指向的值
    printf("After function call: *p = %d\n", *p);

    return 0;
}

// 函数定义
void setPointer(int **ptr) {
    int newValue = 99; // 定义一个新的整数变量
    *ptr = &newValue; // 修改传入的指针,使其指向 newValue 的地址
}
  • int **ptrptr 是一个二级指针,表示它是一个指向 int * 的指针。
  • *ptr = &newValue;*ptr 解引用 ptr,得到一个 int * 指针,然后将它指向 newValue 的地址。这个操作会修改 p 的指向,使其指向 newValue 的地址。
  • int *p = &value;:定义一个指针 p,并使其指向 value 的地址。
  • setPointer(&p);:传递 p 的地址(&p),使 setPointer 函数能够修改 p 的值。
  • *p:解引用指针 p,访问它指向的值。

注:

  • 传递 p 的地址(&p)到 setPointer
  • ptrsetPointer 中指向 p,因此 *ptr 就是 p
  • 修改 *ptr(即 p)指向 newValue 的地址。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李解49

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值