指针问题的总结

本文介绍了指针的基本概念,如指针作为地址、*操作符作为传送门以及指针在传值中的作用。通过示例程序展示了如何使用一级指针实现变量值的交换,并解释了一级指针在函数调用中传值的拷贝特性。接着,文章探讨了二级指针的概念,它用于存储一级指针的地址,允许对指针本身进行操作,从而间接修改原始变量的值。
摘要由CSDN通过智能技术生成

指针问题的总结

一级指针

  1. 一切变量都是房间号,一切变量都有地址,地址就是房间号。

  2. 指针就是地址,存放地址的变量就是指针变量。

  3. *就是传送门,能够根据房间号传送对应的变量。

  4. 一切传值都是拷贝。

    一级指针在程序中起到的最重要的作用就是传值,来看一下下面一个非常经典的学习指针时的程序:

#include <stdio.h>
void swap(int a, int b)
{
    int t = a;
    a = b;
    b = t;
}
int main()
{
    int a, b;
    printf("请输入:\n");
    scanf("%d %d", &a, &b);
    printf("函数执行前:\n");
    printf("a=%d b=%d\n", a, b);
    swap(a, b);
    printf("swap函数执行后:\n");
    printf("a=%d b=%d\n", a, b);
    return 0;
}

运行结果如下:
在这里插入图片描述

我们可以看到,在函数执行之后,a与b的值并没有发生改变,这是因为一切的传值都只是拷贝,全局变量的值被拷贝给了局部变量,但全局变量的值本身并没有发生改变,我们再来看下一个程序:

#include <stdio.h>
void swap(int *a, int *b)
{
    int t = *a;
    *a = *b;
    *b = t;
}
int main()
{
    int a, b;
    printf("请输入:\n");
    scanf("%d %d", &a, &b);
    printf("函数执行前:\n");
    printf("a=%d b=%d\n", a, b);
    swap(&a, &b);
    printf("swap函数执行后:\n");
    printf("a=%d b=%d\n", a, b);
    return 0;
}

执行结果为:

在这里插入图片描述

在这个程序中,函数执行之后,a和b的值都改变了,这是因为在这个函数当中传递的是指针变量,把a和b的地址传递到了函数当中,函数通过取他们的地址,从而达到了改变他们的值的目的。

二级指针

在这个函数当中传递的是指针变量,把a和b的地址传递到了函数当中,函数通过取他们的地址,从而达到了改变他们的值的目的。

二级指针

二级指针存放的是一级指针的地址(二级指针指向的是比他低一级指针的地址)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

冰冰web

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

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

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

打赏作者

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

抵扣说明:

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

余额充值