C语言 指针 指针变量的引用拓展及源码分析(七)

举报
谦虚斯帕克 发表于 2022/03/22 21:22:48 2022/03/22
【摘要】 三.指针变量的引用拓展 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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。