Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Структуры и объединения
Только две вещи можно сделать со структурой или объеди- нением: назвать один из их членов (с помощью операции) или извлечь их адрес (с помощью унарной операции &). Другие операции, такие как присваивание им или из них и передача их в качестве параметров, приводят к сообщению об ошибке. В бу- дущем ожидается, что эти операции, но не обязательно ка- кие-либо другие, будут разрешены. В п. 15.1 Говорится, что при прямой или косвенной ссылке на структуру (с помощью. Или ->) имя справа должно быть членом структуры, названной или указанной выражением слева. Это ограничение не навязывается строго компилятором, чтобы дать возможность обойти правила типов. В действительности перед '.' допускается любое L-значение и затем предполагает- ся, что это L-значение имеет форму структуры, для которой стоящее справа имя является членом. Таким же образом, от вы- ражения, стоящего перед '->', требуется только быть указате- лем или целым. В случае указателя предполагается, что он указывает на структуру, для которой стоящее справа имя явля- ется членом. В случае целого оно рассматривается как абсо- лютный адрес соответствующей структуры, заданный в единицах машинной памяти. Такие структуры не являются переносимыми.
Функции
Только две вещи можно сделать с функцией: вызвать ее или извлечь ее адрес. Если имя функции входит в выражение не в позиции имени функции, соответствующей обращению к ней, то генерируется указатель на эту функцию. Следовательно, чтобы передать одну функцию другой, можно написать
INT F(); ... G(F);
Тогда определение функции G могло бы выглядеть так:
G(FUNCP) INT(*FUNCP)(); \( ... (*FUNCP)(); ... \)
Обратите внимание, что в вызывающей процедуре функция F дол- жна быть описана явно, потому что за ее появлением в G(F) не следует скобка (.
|