sizeof(*p)是我的结果未定义?

1 c++ pointers sizeof dereference

在这段代码中,我正在取消引用未初始化的元素.我的结果未定义吗?

int x[10];
int *p = x;

cout << sizeof(p) / sizeof(*p) << endl;
Run Code Online (Sandbox Code Playgroud)

R S*_*ahu 5

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)

  • 方式太多人认为数组==指针 (3认同)