Как можно получить доступ к структурам структур, используя арифметику указателя?Массив структур и арифметика указателя
Предположим, у меня есть на структуру
struct point{
int x;
int y;
}collection[100];
Предположим, у меня есть функция
int func(struct point *collection,int size)
Внутри этой функции я получить доступ к элементу, как показано ниже.
collection[0].x
Это то же самое, что *(collection + 0).x
? Поскольку оператор .
имеет более высокий приоритет, чем оператор *
, сначала указатель коллекции увеличивается на 0, а оператор точки применяется, а затем разыгрывается указатель? Так или иначе, это не имеет смысла; любое уточнение оценивается.
Если вы действительно хотите испечь свою лапшу, можете ли вы решить, что '0 [коллекция] .x' есть? –
@ Eric Lippert (* (0 + collection)). X, из того, что я собрал, оператор [] означает ... a [5] = * (a + 5), поэтому 5 [a] означает * (5 + a) поэтому 0 [коллекция] .x - это то же самое, что и коллекция [0] .x взял меня на некоторое время, я понял все правильно. – tesseract
Вы поняли! Индексирование - просто причудливый вид сложения, и добавление является коммутативным. –