面试题答案
一键面试- 为什么
*p
是左值:- 在C语言中,左值是指可以出现在赋值表达式左边的表达式,它表示一个可寻址的内存位置。
- 对于
int *p = &a;
,*p
通过指针p
间接引用了变量a
的内存位置。由于a
有自己的内存地址,*p
作为对a
的间接访问,也代表了这个可寻址的内存位置,所以*p
是左值。
- 通过指针间接访问修改
a
的值:
#include <stdio.h>
int main() {
int a = 10;
int *p = &a;
*p = 20; // 通过指针间接修改a的值
printf("a的值为: %d\n", a);
return 0;
}
- 修改过程中左值概念的体现:
- 在
*p = 20;
这一语句中,*p
出现在赋值运算符的左边,符合左值的定义。因为*p
代表了a
的内存位置,所以可以将值20
存储到a
所占据的内存空间中,从而修改了a
的值。这里*p
作为左值,为赋值操作提供了目标内存地址。
- 在