As Johannes Schaub says here, the sizeof operand evaluate the size of arrays with variable size in runtime, but... How? Where is that size stored? Why doesn't it return the size of the pointer type?
Example code:
#include <iostream>
using namespace std;
int main(int argc, char** argv)
{
int array[argc];
cout << sizeof array << endl;
return 0;
}
&, (b) the operand of unarysizeof, or (c) a string literal in an initializer used to initialize an array object.