zoukankan      html  css  js  c++  java
  • C和指针指针

    变量的值就是分配给该变量的内存位置所存储的数值。

    int a=112;

    int *d=&a;

    指针d指向a,但是变量d表示变量a的地址,*d表示a的内容。

    ++的优先级高于*,*cp++设计3个步骤:

    1)++操作符产生cp的一份拷贝

    2)++操作符增加cp的值

    3)在cp的拷贝上执行间接访问操作

    • 指针表达式 P101

    char ch='a';

    char *cp=&ch;

    cp作为右值时,表示的是cp内存储的值,即ch的地址,作为左值时,就是cp的内存位置

    &cp作为右值时,是cp的地址,结果的类型是指向字符的指针的指针,但是这个值的存储位置没有清晰定义,所以这个表达式不是一个合法的左值

    *cp作为右值时,表示cp所指向内存空间内的值,即ch的值。作为左值时,是ch的地址

    *cp+1   首先进行间接防问操作,可以得到ch的值,取得这个值的一份拷贝并把它与1相加,这个表达式的最终结果的存储位置并未清晰定义。

    因此只要表达式作为右值时的值的位置是可以确定的,那么它就可以作为左值

    cp++  后缀操作增加cp的值,返回cp值的一份拷贝,这样表达式的值就是cp原来的值的拷贝

    *(cp+1)  作为右值时,是ch的下一个位置的内容,作为左值时,是ch的下一个位置的内存地址

    总结:作为右值时返回内存中的值,作为左值时,返回指向的地址

  • 相关阅读:
    [bzoj1934][Shoi2007]Vote 善意的投票
    [bzoj1834][ZJOI2010]network 网络扩容
    [bzoj2127]happiness
    [bzoj3876][Ahoi2014]支线剧情
    [bzoj1927][Sdoi2010]星际竞速
    [bzoj3223]Tyvj 1729 文艺平衡树
    [bzoj3224]Tyvj 1728 普通平衡树
    FJOI2017 RP++
    [bzoj3529][Sdoi2014]数表
    异步ajax请求数据处理
  • 原文地址:https://www.cnblogs.com/sanshuiyijing/p/3030354.html
Copyright © 2011-2022 走看看