ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
7 июля
205687 Топик полностью
Vit (11.08.2010 09:56, просмотров: 59) ответил Т.Достоевский на А это у кейла такая особенность?
Не у Кейла. СтОит почитать учебник по Си. timeinfo это указатель на структуру struct tm * timeinfo; указатель - это переменная, в которую можно положить адрес переменной указанного(ну всмысле того типа, который в объявлении указателя) типа. Указатели могут быть на элементы разных типов, в т.ч. на структуры. Благодаря типу компилятор может найти смещения от этого адреса для каждого элемента структуры. Указатели занимает места меньше, чем структуры, потому при их использовании не нужны лишние копирования. взять значение всей структуры по указателю это *timeinfo = бла-бла-бла, где бла-бла-бла - структура типа tm, возвращаемое значение функции типа struct tm, ну или какая-нить фигня, явным способом приведенная к типу tm. взять значение элемента структуры по указателю можно разными способами - (*timeinfo).tm_year или timeinfo->tm_year, что в результате даёт одно и тоже, но по сути всё же несколько отличается - второй вариант - выборка элемента структуры - вроде как короче и быстрее, потому как в первом считается, что вроде как берётся структура целиком, а потом используется элемент из неё, ну а во втором идёт работа сразу с элементом и рассчитанным (компилятором при компиляции) смещением до него. правда современные компиляторы и маломальская оптимизация вряд ли дадут заметить эту разницу, но всё-таки предпочтительнее обращаться к элементу структуры по указателю через выборку (стрелочка). ежели чё намалевал не так, коллеги поправят;)