取址运算符&用来取得其操作数的地址。如果操作数 x 的类型为 T,则表达式 &x 的类型是 T 类型指针(指向 T 的指针)。

取址运算符的操作数必须是在内存中可寻址到的地址。换句话说,该运算符只能用于函数或对象(例如左值),而不可以用于位字段,以及那些还未被存储类修饰符 register 声明的内容。

当需要初始化指针,以指向某些对象或函数时,需要获得这些对象或函数的地址:

float x, *ptr;ptr = &x;
// 合法:使得指针ptr指向xptr = &(x+1);
// 错误: (x+1) 不是一个左值

相反地,当已具有一个指针,并且希望获取它所引用的对象时,使用间接运算符 *(indirection operator),有时候这会被称为解引用运算符(dereferencing operator)。它的操作数必须是指针类型。如果 ptr 是指针,那么 *ptr 就是 ptr 所指向的对象或函数。如果 ptr 是一个对象指针,那么 *ptr 就是一个左值,可以把它(即 *ptr)当作赋值运算符左边的操作数:

float x, *ptr = &x;*ptr = 1.7;                   // 将1.7赋值给变量x++(*ptr);                                  // 并将变量x的值加1

在这个示例最后的语句中,ptr 的值保持不变,但 x 的值变成 2.7。

如果指针操作数的值不是某个对象或函数的地址,则间接运算符*的操作结果无法确定。

像其他一元操作数一样,运算符 & 和 * 具有很高的优先级。操作数的组合方式是从右到左。因此,表达式 ++(*ptr)中的括号是没有必要的。

运算符 & 和 * 是互补的:如果 x 是一个表达式,用于指定一个对象或一个函数,那么表达式 *&x 就等于 x。相反地,在形如 &*ptr 的表达式中,这些运算符会互相抵消,表达式的类型与值等效于 ptr。然而,不管 ptr 是不是左值,&*ptr 都一定不会是左值。

声明:

本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。

C语言*运算符和运算符相关推荐

  1. C语言表达式和运算符大学霸IT达人

    C语言表达式和运算符大学霸IT达人 C语言中表达式会包含常量.标识符.运算符.最基础最简单的表达式就是常量表达式.单独的常量表达式是没有意义的.例如,3就是一个常量表达式,单独放在一处没有实际的意义. ...

  2. 数学运算符和运算符的优先级

    一.数学运算符和运算符的优先级 所谓数学函数,顾名思义就是在公式中为了进行数学运算所设计出来的函数.其实要在Excel中进行数学运算并不是所有的情况下都用数学函数,有些情况下可以用基本的数学运算符就可 ...

  3. iOS开发基础-C语言数据类型和运算符

    第2章 数据类型和运算符 2.1 注释 程序注释是源代码的一个重要部分,对于一份规范的程序源代码而言,注释应该占到源代码的1/3以上: 单行注释 //: 多行注释 /*注释开始和*/注释结束,需要指出 ...

  4. c语言关键字和运算符,C语言关键字和运算符.doc

    C语言一共有32个关键字,如下所述: auto :声明自动变量 short :声明短整型变量或函数 int: 声明整型变量或函数long :声明长整型变量或函数 float:声明浮点型变量或函数 do ...

  5. c++语言运算符的优先次序,C++中的运算符和运算符优先级总结

    运算符是一种告诉编译器执行特定的数学或逻辑操作的符号.C++ 内置了丰富的运算符,并提供了以下类型的运算符: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 杂项运算符 本文将逐一介绍算术运 ...

  6. C++中的运算符和运算符优先级总结

    原文链接:http://www.jb51.net/article/83857.htm 运算符是一种告诉编译器执行特定的数学或逻辑操作的符号.C++ 内置了丰富的运算符,并提供了以下类型的运算符: 算术 ...

  7. JS运算符和运算符的优先级

    一.算数运算符 + 加:可以对两个值进行加法运算,如果是两个字符串则进行字符串拼接 任何值和字符串做加法运算,都会先转为字符串,然后再和字符串做拼接操作 也可以通过"+"完成隐式转 ...

  8. GCC总结、C语言关键字和运算符

    文章目录 GCC选项总结 关键字 运算符 GCC选项总结 #查看gcc版本 gcc -v #小写的vgcc -o 输出的文件名 输入文件名GCC编译的四个阶段: gcc -E #预处理生产.i文件 g ...

  9. 【MySQL】MySQL中的逻辑运算符,位运算符和运算符的优先级

    目录 一. 逻辑运算符 1.1 逻辑非NOT 1.2 逻辑与AND 1.3 逻辑或OR 1.4 逻辑异或XOR 二. 位运算符 三. 运算符的优先级 一. 逻辑运算符 MySQL中支持4种逻辑运算符: ...

最新文章

  1. mac idea用自带的maven还是_免费版的 IDEA 为啥不能使用 Tomcat ?
  2. SAP Spartacus 自定义 PageResolver 的用法
  3. 本地搭建K8s环境,并配置Ingress代理(1)
  4. SpringBoot 自带工具类~ObjectUtils
  5. 二叉树的链表存储与遍历
  6. 深度优先搜索——单词接龙(洛谷 P1019)
  7. 创业几乎不要本钱,是创业圈内最大的谎言
  8. [导入]Text To Picture
  9. Windows 10 系统下配置java的classpath
  10. C++函数模板(模板函数)详解
  11. 图论与代数结构 最短路问题
  12. pyinstaller编译报错 IsADirectoryError: [Errno 21] Is a directory
  13. TOM邮箱|怎么在邮箱里设置邮件个人签名呢?
  14. word必备快捷键使用
  15. eclipse配置--代码提示、xml提示
  16. C/C++编程:写了placement new也要写placement delete
  17. Database Mirroring
  18. 优秀课程案例|如何用scratch画折线统计图
  19. 【Java 并发编程】【05】线程安全问题与线程同步
  20. Codeforces-1008A - Romaji - 水题

热门文章

  1. J2Pay –完整示例
  2. spring pom设置_Spring社交Twitter设置
  3. junit 测试 dao_JUnit测试Spring Service和DAO(带有内存数据库)
  4. 如何将SQL GROUP BY和聚合转换为Java 8
  5. 在CloudBees上开发,测试和部署独立应用程序
  6. Thymeleaf –片段和angularjs路由器局部视图
  7. 将Java 8支持添加到Eclipse Kepler
  8. 番石榴的EventBus –简单的发布者/订阅者
  9. 适用于JDeveloper 11gR2的Glassfish插件
  10. 弱,弱,最弱,利用专业参考来利用垃圾收集器