【发布时间】:2016-06-24 12:01:22
【问题描述】:
如果我有:
int a[] = {1,2,3};
int len = sizeof(a) / sizeof(int);
我得到 3,但我不明白为什么。
他们总是告诉我数组是一个指针,不存储它的长度,而只存储指向第一个元素的指针。
有人可以更好地向我解释一下吗?
【问题讨论】:
-
谁教你数组是指针是非常错误的,正如你从这个例子中看到的那样。忽略它。我不确定有什么要解释的。
sizeof(a)为您提供数组的大小(以字节为单位)。 -
我想我的陈述过于简单化了我的意思。没有错,但过于简单化了。取点。将删除 cmets
-
@UnderDog 或者完全错误。至少,它是一种会导致如此多的混乱以致适得其反的心理模型。
-
@juanchopanza,我不会弯下腰在这样的水平上争论。这不是完全错误,这是我想说的过于简单化的版本。它“可以”被视为指向第一个元素的常量指针。我会拉上拉链并继续前进。看来你有很多时间来发表这种贬低的言论。
-
@UnderDog 鉴于这是一个关于为什么数组 不是 指针的问题,我不认为指出你的过度简化是错误的等级。对此已经有太多的困惑,看到更多的人在做这件事变得乏味。