Я должен отметить, что *(variable + 6)
не точно , как variable[6]
, это работает только потому, что компилятор знает размер объектов, на которые ссылается переменная (int
имеет размер 4 байта ), так что на самом деле происходит добавление указателей:
variable + 6*sizeof(int)
. Это просто абстрагируется компилятором.
Я не совсем уверен (более того, это может зависеть от компилятора), но с массивом структур это может не сработать, потому что struct
в два раза больше int
:
struct a {
int a;
int b;
};
struct a arr[5];
int nmb;
struct a *res = nmb[arr]