美文网首页
理解C指针以及多级指针

理解C指针以及多级指针

作者: 东也_ | 来源:发表于2021-04-25 15:20 被阅读0次

    &: 取址符

    *加变量名:可以理解为取值符,因为指针变量里面存的是一个指针,所以要取地址所存储的值;

    例:

        int a  = 10;
        int *b = &a;
        int **c = &b;
    
        printf(" a == %d  a的值 \n ",a);
        printf("&a == %d   a的地址\n", &a);
        
        printf(" b == %d b变量的值存储的a的地址\n",b);
        printf("&b == %d b变量的地址\n ", &b);
        printf("*b == %d 存储的地址所指向的值也就是a的值\n", *b);
        
        printf(" c == %d c变量的值存储的b的地址\n",c);
        printf("&c == %d c变量的地址\n",&c);
        printf("*c === %d 因为c存储的是b的地址,然后通过b的地址找到它所存储的值,也就是a的地址",*c);
        printf("**c == %d 因为*c的值是a地址,所以**c就是a地址所指向的值 也就是a的值\n",**c);
    

    打印结果:

    a == 10 -------- a的值
    &a == -361778052 -------- a的地址
    b == -361778052 -------- b变量的值存储的a的地址
    &b == -361778064 -------- b变量的地址
    *b == 10 -------- 存储的地址所指向的值也就是a的值
    c == -361778064 -------- c变量的值存储的b的地址
    &c == -361778072 -------- c变量的地址
    c === -361778052 -------- 因为c存储的是b的地址,然后通过b的地址找到它所存储的值,也就是a的地址
    c == 10 -------- 因为c的值是a地址,所以
    c就是a地址所指向的值 也就是a的值

    记住三个点:

    1. 定义一个指针,赋值的时候需要的是一个指针地址
    2. 每个变量本身都有会有一个地址;
    3. 通过*加变量名就是获取存储的地址所指向的值,通常说的是解引用;

    三级指针在赋值时候就需要二级指针的变量地址了,以此类推,无限套娃;多看几遍就会理解了;

    相关文章

      网友评论

          本文标题:理解C指针以及多级指针

          本文链接:https://www.haomeiwen.com/subject/bipdrltx.html