如何可靠地获得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;
}
Run Code Online (Sandbox Code Playgroud)
这个问题的答案建议,sizeof但他们并没有说它(显然?)如果你传递数组不起作用.那么,我是否必须使用哨兵?(我不认为我的foo函数的用户总是可以信任在最后放置一个标记.当然,我可以使用std::vector,但是我没有得到漂亮的速记语法{1,2,3,4,5}.)