C语言中地址与指针运算符解析

在C语言中,&* 运算符分别用于获取变量的地址和通过指针访问变量的值。

取地址运算符 &

& 运算符放在变量名前,用于获取该变量的内存地址。例如:

int num = 10;
int *ptr = #  // ptr 存储 num 的地址

指针运算符 * (解引用运算符)

* 运算符放在指针变量名前,用于访问该指针指向的内存地址中存储的值。

int num = 10;
int *ptr = #
printf("%d
", *ptr); // 输出 10,即 ptr 指向地址的值

运算符优先级与结合性

&* 运算符具有相同的优先级,并遵循从右到左的结合性。这意味着表达式 &*ptr 等价于 &( *ptr ),而 *# 等价于 *( # )

示例分析

考虑以下代码片段:

int a = 100, b = 200;
int *ptr1 = &a, *ptr2 = &b 
printf("%d, %d
", a, *ptr2); // 输出: 100, 200
  • ptr1 存储变量 a 的地址。
  • ptr2 存储变量 b 的地址。
  • *ptr2 访问 ptr2 指向的地址的值,即 b 的值。

指针操作与变量修改

通过指针修改其指向地址的值,将直接影响对应的变量。

*ptr1 = 300; // 修改 ptr1 指向地址的值
printf("%d
", a); // 输出 300,a 的值被修改 
ppt 文件大小:335KB