指针运算符
有两个指针运算符
- 取址运算符 &
- 地址内内容(地址值)运算符 (间接访问运算符)*
1.地址内内容运算符 ( * )
* 是一元运算符。它给出了存储在特定地址的值。其结合性为自右至左,用来表示指针变量所指的变量。在*运算符之后跟的变量必须是指针变量。 需要注意的是指针运算符*和指针变量说明中的指针说明符*不是一回事。在指针变量说明中,“*”是类型说明符,表示其后的变量是指针类型。而表达式中出现的“*”则是一个运算符用以表示指针变量所指的变量值。
“地址值”运算符也称为“间接”运算符。
q = *m;
如果 m 包含变量 count 的内存地址,则前面的赋值语句可以将 count 的值放入 q。
2.取址运算符 ( & )
& 是一个一元运算符,它返回其操作数的内存地址。其结合性为自右至左,其功能是取变量的地址。在 scanf 函数及前面介绍指针变量赋值中,我们已经了解并使用了&运算符。
m = & count;
前面的赋值语句可以是“变量count的内存地址放入m”。
指针变量和指向变量之间
以下图例解释了指针变量和指向变量之间的关系
指针运算符的优先级
使用指针时,我们必须遵守以下优先级规则:
- 运算符*和&与一元运算符具有相同的优先级(否定!,递增++,减量–)。一些只需要一个操作数的运算符称为一元运算符(或单目运算符)
- 在同一表达式中,一元运算符*,&,!,++,– 优先顺序从右到左进行
以下表达式为真:
最后一个示例中,括号()是必要的,因为一元运算符从右向左运算。如果没有括号,P就先加加了,指针指向的存储位置加一,里面的值当然就不一样了。
指针操作的算术和基本运算
除教程外,本网站大部分文章来自互联网,如果有内容冒犯到你,请联系我们删除!