C语言中*运算符如何实现指针操作?
- 内容介绍
- 文章标签
- 相关推荐
本文共计670个文字,预计阅读时间需要3分钟。
取地址运算符+用于获取操作数的地址。若操作数类型为T,则表达式x+的类型是T的指针类型(指向T的指针)。取地址运算符的操作数必须是内存中可寻址的地址。
&用来取得其操作数的地址。如果操作数 x 的类型为 T,则表达式 &x 的类型是 T 类型指针(指向 T 的指针)。取址运算符的操作数必须是在内存中可寻址到的地址。换句话说,该运算符只能用于函数或对象(例如左值),而不可以用于位字段,以及那些还未被存储类修饰符 register 声明的内容。
当需要初始化指针,以指向某些对象或函数时,需要获得这些对象或函数的地址:
float x, *ptr; ptr = &x; // 合法:使得指针ptr指向x ptr = &(x+1); // 错误: (x+1) 不是一个左值 相反地,当已具有一个指针,并且希望获取它所引用的对象时,使用间接运算符 *(indirection operator),有时候这会被称为解引用运算符(dereferencing operator)。它的操作数必须是指针类型。如果 ptr 是指针,那么 *ptr 就是 ptr 所指向的对象或函数。
本文共计670个文字,预计阅读时间需要3分钟。
取地址运算符+用于获取操作数的地址。若操作数类型为T,则表达式x+的类型是T的指针类型(指向T的指针)。取地址运算符的操作数必须是内存中可寻址的地址。
&用来取得其操作数的地址。如果操作数 x 的类型为 T,则表达式 &x 的类型是 T 类型指针(指向 T 的指针)。取址运算符的操作数必须是在内存中可寻址到的地址。换句话说,该运算符只能用于函数或对象(例如左值),而不可以用于位字段,以及那些还未被存储类修饰符 register 声明的内容。
当需要初始化指针,以指向某些对象或函数时,需要获得这些对象或函数的地址:
float x, *ptr; ptr = &x; // 合法:使得指针ptr指向x ptr = &(x+1); // 错误: (x+1) 不是一个左值 相反地,当已具有一个指针,并且希望获取它所引用的对象时,使用间接运算符 *(indirection operator),有时候这会被称为解引用运算符(dereferencing operator)。它的操作数必须是指针类型。如果 ptr 是指针,那么 *ptr 就是 ptr 所指向的对象或函数。

