C语言指针表达式(图解)

C语言是软件编程的基础,不管你使用什么语言都会有必要用上它的时候,Android的原生开发NDK就是可以在Java层调用C/C++代码,iOS的objective-c也是在C语言上的一层封装实现的,想要做好移动端的开发,C语言是必不可少的技能。指针是C语言的灵魂,指针有各种各样的表达式,那么就让我们来学习一下,这些表达式和配图都是来自《C与指针》。


我们从一个最简单的指针使用讲解:

char ch = 'a';
char *cp =&ch;


这是它的内存指向图,cp是一个指针,用虚线表示指针的间接引用,箭头是指在ch的框上,说明cp是保存着ch的地址,a为ch的内容,?号是ch下一个地址的值。下面我们都按这种图解的方式。


ps:左值、右值表示表达式在等号的左边还是右边。



右值:&ch 表示的是ch变量所在的地址;

左值:他的左值是非法的,因为没有指定一个存储空间,&ch只是int类型的常量,不能给它赋值;


右值:cp表示的是cp指针变量保存的地址值,这里保存的是变量ch的地址;

左值:可以使任意同类型变量的地址



右值:与&ch类型,这里取得是指针变量的地址,是指针的指针地址;

左值:非法,只是一个int类型的常量



右值:间接访问符,取得指针指向的变量ch的值;

左值:设置指针指向的变量ch的值



右值:取得指针指向的变量ch的值 再加1;

左值:非法。




右值:取得ch下一个内存地址的值;

左值:设置ch下一个内存地址的值;



右值:++在前,表达式指向ch下一个内存地址,之后cp的值加1;

左值:非法



右值:表达式指向cp原来的值,之后cp的值加1

左值:非法



右值:指向ch下一个地址的值,之后cp加1;

左值:设置ch下一个地址的值,并cp加1;



右值:先取得cp所指向的地址的值,就是ch的值,然后cp再加1;

左值:设置ch的值,cp加1



右值:是cp指向的地址的值(ch的值),在加1;

左值:非法



右值:从右到左结合,先是cp的地址加1,然后去该地址的值,最后值加1

左值:非法



右值:先执行后面的++,这个返回的是cp的拷贝,然后访问cp指向的地址ch的值,最后ch的值加1,cp加1;

左值:非法


开始的时候对这几个图非常迷糊,多看几次就明白了,再不行就自己动手写代码验证一下。







评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值