1 c++ pointers sizeof dereference
在这段代码中,我正在取消引用未初始化的元素.我的结果未定义吗?
int x[10];
int *p = x;
cout << sizeof(p) / sizeof(*p) << endl;
Run Code Online (Sandbox Code Playgroud)
cout << sizeof(p) / sizeof(*p) << endl;
Run Code Online (Sandbox Code Playgroud)
是完全合法的,但不完全有效的代码.sizeof
在编译时进行评估.如果在编译时无法对它们进行求值,则会出现编译错误.
令人意外的是预期的结果.你不会得到的10
.要获得10
,你需要使用:
cout << sizeof(x) / sizeof(x[0]) << endl;
Run Code Online (Sandbox Code Playgroud)