Menu Close

C语言 – 指针运算符的取址运算符,间接访问运算符及运算符优先顺序

指针运算符

有两个指针运算符

  • 取址运算符 &
  • 地址内内容(地址值)运算符 (间接访问运算符)*

1.地址内内容运算符 ( * ) 
* 是一元运算符。它给出了存储在特定地址的值。其结合性为自右至左,用来表示指针变量所指的变量。在*运算符之后跟的变量必须是指针变量。 需要注意的是指针运算符*和指针变量说明中的指针说明符*不是一回事。在指针变量说明中,“*”是类型说明符,表示其后的变量是指针类型。而表达式中出现的“*”则是一个运算符用以表示指针变量所指的变量值。

“地址值”运算符也称为“间接”运算符。

q = *m;

如果 m 包含变量 count 的内存地址,则前面的赋值语句可以将 count 的值放入 q。

 

2.取址运算符 ( & )
& 是一个一元运算符,它返回其操作数的内存地址。其结合性为自右至左,其功能是取变量的地址。在 scanf 函数及前面介绍指针变量赋值中,我们已经了解并使用了&运算符。

m = & count;

前面的赋值语句可以是“变量count的内存地址放入m”。

 

指针变量和指向变量之间

以下图例解释了指针变量和指向变量之间的关系

指针是如何工作的?
指针是如何工作的?

 

指针运算符的优先级

使用指针时,我们必须遵守以下优先级规则:

  • 运算符*和&与一元运算符具有相同的优先级(否定!,递增++,减量–)。一些只需要一个操作数的运算符称为一元运算符(或单目运算符)
  • 在同一表达式中,一元运算符*,&,!,++,– 优先顺序从右到左进行

以下表达式为真:

指针运算符顺序
指针运算符顺序

最后一个示例中,括号()是必要的,因为一元运算符从右向左运算。如果没有括号,P就先加加了,指针指向的存储位置加一,里面的值当然就不一样了。

指针操作的算术和基本运算

 

除教程外,本网站大部分文章来自互联网,如果有内容冒犯到你,请联系我们删除!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Leave the field below empty!

Posted in C语言教程, 家庭生活

Related Posts