• C ~ 指针的运算


    一 :取地址运算“&”与取内容运算“*”:

    单目运算“&”是取操作对象的地址 , “*”是取指针指向的对象的内容 , 两者互为逆运算

    int  x , *p ;
    p = &x ; 

    &(*p) = p 表示指针  ; *(&x)= x 表示变量x

    :指针的算术运算 :

    指针的运算与其基类型有关 , 一般的,如果p是一个指针 ,n是一个正整数 ,则对指针 p 进行 +(-)操作后的实际地址是 :

    p +(-)n*sizeof(基类型)
    
    char    *p ;
    int      *q ;
    float   *tk ; 
    //假设当前地址为 : p = 2110H ,  q = 2231H , tk = 2478H 
    p += 1 ; // p = p + 1 = 2111H
    q += 4 ; // q = q + 4*4 = 2239H
    tk -= 3 ; // tk = tk -3*8 = 246CH
    

     三 : 指针自加 ,自减运算 :

    指针的自加 ,自减运算也是地址运算

    m = * p ++ 等价于 m = *(p ++)
    

    取指针 p 当前所指变量的值赋给变量 m   ;  p 做加 1 运算 , 指向下一个目标变量 .

    m = * ++ p 等价于 m = * ( ++ p)
    

     p 做加 1 运算 , 指向下一个目标变量  ; 取指针 p 当前所指变量的值赋给变量 m .

    m = (*p)++  与  m = ++(*p)
    

    前者是将指针 p  所指的变量的值赋给变量 m  , 然后变量 *p 自加 1  ; 

    后者是将指针 p 所指的变量 *p 的值自加 1 后赋给变量 m .

    四 :指针间的减法运算 :

    指向同一组类型相同数据的指针之间可以进行减法运算 , 相减的结果表示两指针间相距的数据的个数 .

    五 :指针的关系运算 :

    p , q 指向同一个数组 , p > q 表示p 是否指向 q 所指位置的后面 , 若成立 则 表达式的值为 非 0 , 否则为 0 .

    六 :指针的下标运算 :

    p[i] = *(p + i) ;

    来自

  • 相关阅读:
    左右对齐Justify遇到的坑
    JS中的相等性判断===, ==, Object.is()
    JS调用栈的一些总结
    VueI18n
    【转】Webpack 快速上手(下)
    【转】Webpack 快速上手(中)
    【转】Webpack 快速上手(上)
    springboot打包排除指定jar包依赖
    prometheus+grafana搭建
    fbctf 安装部署出现的问题
  • 原文地址:https://www.cnblogs.com/einstein-2014731/p/5949687.html
Copyright © 2020-2023  润新知