c++ - Casting a (pointer to a variable sized array) to (pointer to pointer) -
what happens when cast [pointer variable sized array] [pointer pointer] ?
int ar[r][c]; int **ptr = (int**)ar; // implicit casting not allowed ptr[0][0] = 100; the above code gives runtime error.
casting variable sized array pointer works expected:
int ar[c]; int *ptr = ar; ptr[0] = 100; here ar decays pointer first element.
but happens internally when casting int(*)[c] int**? why result in runtime error when reading/writing int** variable?
the problem ptr[0] or *ptr supposed pointer, not. is, ptr[0] or *ptr not contain valid pointer. @ address there first element of array ar. run-time error when use expression ptr[0][0] in general case program behaviour undefined.
Comments
Post a Comment