C指针


C语言指针篇

一、int * p

  1. int * p中变量名是p,类型为int*,整型的指针类型。

  2. 赋值方式:

    int a = 5;
    int * p;
    p = &a;
    printf("p = %d\n",p);//p = 6618646 a的地址
    
    int * r = &a;
  3. 可以把存放一个int类型变量的地址赋给一个int * 指针类型的变量。

  4. ‘=’左边是一个int * 指针类型的变量 ,可以存放放置着int类型数值的地址。

  5. ‘=’右边是&a,a是int类型的变量数值5,&是取地址符,&a就是拿到int类型a的数值的地址。

二、int ** q

  1. int ** q中的变量名是q,类型为int ** 。

  2. int * 中存放的是int类型数据的地址。

  3. int ** 中存放的是int类型数据的地址的地址。

    int ** q;
    q = &p;
    printf("q = %d\n",q); //q= 6618626 p的地址
  4. 指向关系:a<—-p<—-q

三、int *** m

  1. int *** m中变量名是m,类型为int ***

  2. int ***中存放的是int类型的地址的地址的地址。

    int *** m;
    m = &q;
    printf("m = %d\n",m);//m = 6618606 q的地址

四、指针操作

  1. * 操作就是取值操作,即取出指针变量存放的地址中所存放的数据。

  2. 分析这种连着好几个*后面跟个变量的表达式,需要从右往左依次抛开

    ***m; 就是* ( * ( * m ))),看的时候需要从最里层一层一层抛开。
        
    *p;
    先看成*(p),再从里向外看,首先他有一个变量p,所有直接可以先从内存中拿到p存放的数据6618636(p中的数据),再找到内存中6618636那片内存,最后取出6618636中的存放数据5(具体数据)
    
    ***m = 5;
    先看成 *(*( * (m))),再从里向外看
    先从内存中拿到m存放的数据6618616(m中的数据),再从内存中找到6618616那片内存,取出存放的数据6618624(*q中存放的数据),完成了 * (m)操作,再从内存中找到6618624那片内存,取出存放的数据6618636 ( *( *(m)) 中存放的数据),完成了 *(* (m))操作,再从内存中找到6618636 那片内存,取出存放的数据5( *(*( *(m))) 中存放的数据),完成了 *(*( *(m)))操作, (几个*查找几层)

文章作者: nusqx
文章链接: https://nusqx.top
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 nusqx !
评论
  目录