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;
}