0
struct Apartment {
int floor; // aparment's floor
};
void main() {
Apartment apartments[10];// array containing all the apartments
create_apartments(apartments);
};
void create_apartments(struct Apartment *apartments) {
int i,pos;
pos=0;
for(i=0;i<10;i++){
*(apartments+pos)->floor = i; //error apears here!
pos++;
}
}
В строке комментариев появляется недопустимый аргумент типа унарного '*' (есть 'int'). может кто-нибудь сказать мне, что случилось? спасибо :)Недопустимый аргумент типа unary '*' (has 'int')
Поскольку приоритет '- оператора>' выше, то '*' так выражение парезов как '* ((квартиры + Pos) -> этаж) 'И' * 'применяется к значению' int', поэтому компилятор выдает сообщение об ошибке: '' недопустимый аргумент типа унарного '*' (есть 'int') ". В любом случае использование '*' с '->' бессмысленно! Даже если вы хотите использовать '*' и '.' (dot), тогда он должен написать' (* (apartments + pos)). Floor', потому что приоритет '*' ниже, чем '.'. это также выглядит излишним осложнением. используя '[]' оператор, и мы можем написать 'apartments [pos] .floor = i;'. Здесь нам не нужно никаких '()' потому что '[]' приоритет выше;) –
'apartments [pos] .floor = i;' parses as '(apartments [pos]). Floor = i;' потому что ' квартиры [pos] 'ничего, кроме' * (апартаменты + pos) 'so' (квартиры [pos]). floor = i; 'такое же, как' (* (апартаменты + pos)). floor = i; ' –