C语言 指针 指针变量的引用拓展及源码分析(七)
【摘要】 三.指针变量的引用拓展 1.写法时注意的问题及说明上一篇简单介绍 *取值运算符和 &取址运算符的定义,还有简单了解;这一篇相当于上一篇的拓展; 简单语句区别先看下面四种简单语句:*p+=1;//(1)++*p;//(2)(*p)++;//(3)*p++;//(4)分析一下就知道前三种语句相同,都是将*p指向的值加一;第四种写法是先取出*p所对应的值,然后对指针变量p进行加一的运算;如果q也...
三.指针变量的引用拓展
1.写法时注意的问题及说明
- 上一篇简单介绍 *取值运算符和 &取址运算符的定义,还有简单了解;
- 这一篇相当于上一篇的拓展;
简单语句区别
先看下面四种简单语句:
*p+=1;//(1)
++*p;//(2)
(*p)++;//(3)
*p++;//(4)
-
分析一下就知道前三种语句相同,都是将*p指向的值加一;
-
第四种写法是先取出*p所对应的值,然后对指针变量p进行加一的运算;
-
如果q也是指向字符型的指针变量,则语句为:
q=p;
那么q和p的值指向的都是同一个变量的地址;(不是值 !是地址 !); -
(3)和(4)式子的区别:
(*p)相当于p++; 括号很重要,如果去掉括号则意义完全不同 !
++ 和两个运算符为同一优先级别,结合方向为自右向左;如果去掉括号则变成
*(pointer_1++);
中等语句区别
&*pointer_1 = &a;//(1)
- &*pointer_1 含义?
’ * '和 ‘&’ 的优先级相同,并且结合性为自右向左;
则左侧的含义为指针变量所指向变量的地址;
-
&a的含义?
变量a的地址; -
最终结果是&*pointer_1指向的地址和变量a的地址相同;
&*pointer_1 = &a;
pointer_2 = &*pointer_1;//(2)
-
式子2的含义?
原本&*pointer_1指向a的地址,现在赋值给pointer_2;
则结果为pointer_2现在也指向变量a; -
相当于:
pointer_2 = &a;
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)