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 的值被修改
335KB
文件大小:
评论区