Can I access multidimensional array using a pointer?

前端 未结 2 647
渐次进展
渐次进展 2020-12-11 07:56

From this reference, In C it seems the following behavior is undefined.

int my_array[100][50];
int *p = my_array[0];
p[50]; // UB

Is there

2条回答
  •  [愿得一人]
    2020-12-11 08:13

    Yes in the description of the + operator. You may not dereference that pointer in C because it is a past the end pointer for the first subarray. In C++ this currently is legal because the pointer points to a valid integer (the points to relation is defined somewhere in clause 3). However in both standards adding more than 50 yields undefined behavior.

    A DR was recently sent to the c++ committee about the rule that dereferencing such "valid out of thin air" pointers may be dereferenced, so i would not rely on that.

提交回复
热议问题