【发布时间】:2022-10-04 22:14:05
【问题描述】:
假设我们有一个这样的程序
int main() {
int array[3] = { 1, 2, 3 };
int* ptr = array; // <--- Didn't have to use a "&"
printf("%d\n", *array);
printf("%d\n", *ptr);
return 0;
}
我们期望得到:
1
1
我的问题是
- 我读到here 说“数组”不是“左值”。这是什么意思?
- “数组”只是内存块的名称吗?如果是,该块的地址存储在哪里?
int* ptr = array意味着“数组”块的地址必须存储在“数组”中,对吧? - 它和这样的东西有什么不同? “点”不也是一块内存的名字吗?
struct Point { int x; int y; }; int main() { struct Point point = { 1, 2 }; struct Point* ptr = &point; // <--- Have to use a "&" printf("%d\n", point.x); printf("%d\n", ptr->x); return 0; }
【问题讨论】: