MST

星途 面试题库

面试题:C语言指针间接访问与左值的基础应用

假设有如下代码:int a = 10; int *p = &a; 请解释为什么*p 是左值,以及如何通过指针间接访问修改a的值,并说明修改过程中左值概念的体现。
15.9万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

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