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的下一个位置的内存地址

 

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

转载于:https://www.cnblogs.com/sanshuiyijing/archive/2013/04/19/3030354.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值