C语言*运算符和运算符
取址运算符&
用来取得其操作数的地址。如果操作数 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语言*运算符和运算符相关推荐
- C语言表达式和运算符大学霸IT达人
C语言表达式和运算符大学霸IT达人 C语言中表达式会包含常量.标识符.运算符.最基础最简单的表达式就是常量表达式.单独的常量表达式是没有意义的.例如,3就是一个常量表达式,单独放在一处没有实际的意义. ...
- 数学运算符和运算符的优先级
一.数学运算符和运算符的优先级 所谓数学函数,顾名思义就是在公式中为了进行数学运算所设计出来的函数.其实要在Excel中进行数学运算并不是所有的情况下都用数学函数,有些情况下可以用基本的数学运算符就可 ...
- iOS开发基础-C语言数据类型和运算符
第2章 数据类型和运算符 2.1 注释 程序注释是源代码的一个重要部分,对于一份规范的程序源代码而言,注释应该占到源代码的1/3以上: 单行注释 //: 多行注释 /*注释开始和*/注释结束,需要指出 ...
- c语言关键字和运算符,C语言关键字和运算符.doc
C语言一共有32个关键字,如下所述: auto :声明自动变量 short :声明短整型变量或函数 int: 声明整型变量或函数long :声明长整型变量或函数 float:声明浮点型变量或函数 do ...
- c++语言运算符的优先次序,C++中的运算符和运算符优先级总结
运算符是一种告诉编译器执行特定的数学或逻辑操作的符号.C++ 内置了丰富的运算符,并提供了以下类型的运算符: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 杂项运算符 本文将逐一介绍算术运 ...
- C++中的运算符和运算符优先级总结
原文链接:http://www.jb51.net/article/83857.htm 运算符是一种告诉编译器执行特定的数学或逻辑操作的符号.C++ 内置了丰富的运算符,并提供了以下类型的运算符: 算术 ...
- JS运算符和运算符的优先级
一.算数运算符 + 加:可以对两个值进行加法运算,如果是两个字符串则进行字符串拼接 任何值和字符串做加法运算,都会先转为字符串,然后再和字符串做拼接操作 也可以通过"+"完成隐式转 ...
- GCC总结、C语言关键字和运算符
文章目录 GCC选项总结 关键字 运算符 GCC选项总结 #查看gcc版本 gcc -v #小写的vgcc -o 输出的文件名 输入文件名GCC编译的四个阶段: gcc -E #预处理生产.i文件 g ...
- 【MySQL】MySQL中的逻辑运算符,位运算符和运算符的优先级
目录 一. 逻辑运算符 1.1 逻辑非NOT 1.2 逻辑与AND 1.3 逻辑或OR 1.4 逻辑异或XOR 二. 位运算符 三. 运算符的优先级 一. 逻辑运算符 MySQL中支持4种逻辑运算符: ...
最新文章
- mac idea用自带的maven还是_免费版的 IDEA 为啥不能使用 Tomcat ?
- SAP Spartacus 自定义 PageResolver 的用法
- 本地搭建K8s环境,并配置Ingress代理(1)
- SpringBoot 自带工具类~ObjectUtils
- 二叉树的链表存储与遍历
- 深度优先搜索——单词接龙(洛谷 P1019)
- 创业几乎不要本钱,是创业圈内最大的谎言
- [导入]Text To Picture
- Windows 10 系统下配置java的classpath
- C++函数模板(模板函数)详解
- 图论与代数结构 最短路问题
- pyinstaller编译报错 IsADirectoryError: [Errno 21] Is a directory
- TOM邮箱|怎么在邮箱里设置邮件个人签名呢?
- word必备快捷键使用
- eclipse配置--代码提示、xml提示
- C/C++编程:写了placement new也要写placement delete
- Database Mirroring
- 优秀课程案例|如何用scratch画折线统计图
- 【Java 并发编程】【05】线程安全问题与线程同步
- Codeforces-1008A - Romaji - 水题