据说这里是
术语可修改的左值用于强调左值允许指定的对象被改变以及被检查.以下对象类型是左值,但不是可修改的左值:
- 数组类型
- 不完整的类型
- const限定类型
- 结构或联合类型,其成员之一被限定为const类型
因为这些左值不可修改,所以它们不能出现在赋值语句的左侧.
为什么数组类型对象不可修改?写不正确
int i = 5, a[10] = {0};
a[i] = 1;
Run Code Online (Sandbox Code Playgroud)
?
而且,什么是不完整的类型?
为什么是:
char *ptr = "Hello!"
Run Code Online (Sandbox Code Playgroud)
不同于:
char ptr[] = "Hello!"
Run Code Online (Sandbox Code Playgroud)
具体来说,我不明白为什么你可以使用(*ptr)++来改变数组中'H'的值,而不是指针.
谢谢!