С sizeof
следует быть осторожным, чтобы убедиться, что вы случайно не изменили размер массива, который распался на указатель:
void bad(int a[10])
{
cout << (sizeof(a) / sizeof(a[0])) << endl;
}
int main()
{
int a[10];
cout << (sizeof(a) / sizeof(a[0])) << endl;
bad(a);
}
На моей 64-битной машине это выводит:
10
2
Размер, вычисленный внутри bad
, неверен, поскольку a
будет затухать до указателя. В общем, не доверяйте массиву sizeof
a, который был передан в качестве аргумента функции.