Как я могу получить размер массива C-стиля? Обычно рекомендуется использовать метод sizeof
, но он не работает в функции foo
, где x
передается в:
#include <iostream>
void foo(int x[]) {
std::cerr << (sizeof(x) / sizeof(int)); // 2
}
int main(){
int x[] = {1,2,3,4,5};
std::cerr << (sizeof(x) / sizeof(int)); // 5
foo(x);
return 0;
}
Ответ на этот вопрос рекомендую sizeof
, но они не говорят, что он (видимо?) не работает, если вы передаете массив вокруг. Итак, нужно ли вместо этого использовать часовое? (Я не думаю, что пользователям моей функции foo
всегда можно доверять, чтобы поставить сторожевую панель в конец. Конечно, я мог бы использовать std::vector
, но тогда я не получаю хороший сокращенный синтаксис {1,2,3,4,5}
.)