取址运算符&用来取得其操作数的地址。如果操作数 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. WIN7安装及配置JDK
  2. 【实验】利用系统自带脚本utlsampl.sql创建scott用户及样本数据
  3. APP上架证书无效:解决
  4. 字符串-字符串的查找和替换
  5. [转载] Java笔试题集锦
  6. web导入excel数据
  7. oracle sqe值,质量感悟 | 无论什么层次的供应商都喜欢跟SQE中的高手过招儿
  8. CKeditor的几种配置方式
  9. .NET 基础一步步一幕幕[out、ref、params]
  10. 就是要你懂Java中volatile关键字实现原理
  11. 梳理需求-需求调研报告
  12. java开发职业规划(一)
  13. 动态考勤表-日期只能在某个月选时间段
  14. chimera添加氨基序列
  15. lcs问题java_动态规划法(十)最长公共子序列(LCS)问题
  16. 2019年Q3股票行情:依旧大喜大悲
  17. 字符串(づ。◕‿‿◕。)づ进阶之章
  18. 【每日新闻】企业微信终于与微信实现互通,微信生态商业化的想象力究竟有多大? | To B“非成勿扰”,解决企业服务对接难题
  19. 探索SwipeRefreshLayout配合自定义ListView完成下拉刷新、滑到底部自动加载更多
  20. 百度编辑器(ueditor)踩坑,图片转存无法使用

热门文章

  1. lucene 多个分词查找_使用Lucene的新FreeTextSuggester查找长尾建议
  2. 如何在Spring中将@RequestParam绑定到对象
  3. 使用Zipkin和Sleuth进行SpringBoot微服务跟踪
  4. SpringHibernate3
  5. 通过Java 8流使用Oracle AQ
  6. Java 7和Java 8之间的细微自动关闭合同更改
  7. Spring靴子战争包装
  8. 我们正在破解JDBC,因此您不必
  9. Java 8 Friday Goodies:轻松派本地缓存
  10. JSON处理的Java API(JSR-353)–流API