指针问题的总结

指针问题的总结

一级指针

  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的地址传递到了函数当中,函数通过取他们的地址,从而达到了改变他们的值的目的。

二级指针

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

おすすめ

転載: blog.csdn.net/m0_52780705/article/details/121594247