powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / K&R Структуры 6.1
5 сообщений из 5, страница 1 из 1
K&R Структуры 6.1
    #38601507
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте. Я был не тут, как писал ранее. По факту не занимался. Сегодня продолжил. И у меня возникли вопросы, на некоторые ответил сам, на некоторые нет. Подскажите пожалуйста

1.
K&RЗа словом STRUCT может следовать необязательное имя, называемое ярлыком структуры


Действительно имя необязательное, fe
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
struct
{
	int temp;
};

struct
{
	int temp;
	int temp2;
};

int main()
{
struct x;
}



Ошибка при компиляции не появляется в данном случае, не понимаю почему. И как мне различить два этих элемента. Что делает строка в коде выше:
Код: plaintext
1.
struct x;

. Выделяет память под вторую объявленную структуру ? или это прототип новой структуры ?

У менять есть предположение что объекты неименованных структур создаются только сразу после описания структуры, fe:
Код: plaintext
1.
2.
3.
4.
struct
{
	int temp;
} x,y,z;


Для чего нужна возможность создания таких структур ?

1.2 Логичнее было бы назвать именем структуры, а не ярлыком. Не очень понятно почему именно такое название. Исторические корни ?


2.K&RЭлементы или переменные, упомянутые в структуре, называются членами.
Ярлыки и члены структур могут иметь такие же имена, что и обычные переменные
(т.е. Не являющиеся членами структур), поскольку их имена всегда можно различить
по контексту. Конечно, обычно одинаковые имена присваивают только тесно
связанным объектам.


Я даже проверил, но одинаковые имена не получилось присвоить.
Код: plaintext
1.
2.
int month;
char month;//ругнулся и правильно сделал


Что не так я понимаю в этой фразе ?


3. Приводится пример:
K&R
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
struct date
{
	int day;
	int month;
	int year;
	int yearday;
	char monname[4];
} x,y,z; 



3.1 Как я понял, инициализация происходит сразу. Т.о. выделю в данном случае (16+3+1(конец строки))*3=60 байт ?
3.2 Инициализация установила члены структуры в нуль. Так будет всегда ? в K&R это не написано. Я пока не встретил.
3.3 Упоминаются внешняя и статическая структуры. Чем они отличаются ? Описание внешней хранится в другом файле ?

4 Можно объявить объект типа smth структуры тремя способами ():
a) сразу после описания структуры
б)name_struct x;
в) struct name_struct x;
б и в отличаются чем-нибудь друг от друга ?

5. Операция "." связана с указателями ? Попробую сейчас поискать в стандарте, ссылку на черновик которого вы мне давали ранее.

6. Как структуры хранятся в памяти ? Хранится ли где-нибудь в памяти описание структуры ?

7. Я уже давно хотел видеть в онлайн режиме всю память что выделена для выполняемой программы. Возможно ли это ?
...
Рейтинг: 0 / 0
K&R Структуры 6.1
    #38601509
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PS
Дайте какую-нибудь задачу, пожалуйста
...
Рейтинг: 0 / 0
K&R Структуры 6.1
    #38601528
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercury2.K&RЭлементы или переменные, упомянутые в структуре, называются членами.
Ярлыки и члены структур могут иметь такие же имена, что и обычные переменные
(т.е. Не являющиеся членами структур), поскольку их имена всегда можно различить
по контексту. Конечно, обычно одинаковые имена присваивают только тесно
связанным объектам.


Я даже проверил, но одинаковые имена не получилось присвоить.
Код: plaintext
1.
2.
int month;
char month;//ругнулся и правильно сделал



Что не так я понимаю в этой фразе ?

Имеется в виду что имя структуры или поля может совпадать с именем отдельной переменной.

Код: plaintext
1.
2.
3.
struct a { int b; };
int a;
int b;



SashaMercury3.1 Как я понял, инициализация происходит сразу. Т.о. выделю в данном случае (16+3+1(конец строки))*3=60 байт ?
Инициализация и выделение памяти это разные вещи.
SashaMercury3.2 Инициализация установила члены структуры в нуль. Так будет всегда ? в K&R это не написано. Я пока не встретил.
Если нет инициализатора, то глобальные и статические переменные инициализируются нулями, а локальные не инициализируются (мусор).
SashaMercury3.3 Упоминаются внешняя и статическая структуры. Чем они отличаются ? Описание внешней хранится в другом файле ?
Нету таких.
Внешней или статической может быть переменная (в т.ч. и экземляр структуры), но не структура как тип данных
SashaMercury4 Можно объявить объект типа smth структуры тремя способами ():
a) сразу после описания структуры
б)name_struct x;
в) struct name_struct x;
б и в отличаются чем-нибудь друг от друга ?
б возможен только в С++
а и в - эквивалентны.
в С++ все три эквивалентны.
...
Рейтинг: 0 / 0
K&R Структуры 6.1
    #38601581
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryТ.о. выделю в данном случае (16+3+1(конец строки))*3=60 байт ?
Скорее всего так, но есть особенности компиляторов http://habrahabr.ru/post/142662/
...
Рейтинг: 0 / 0
K&R Структуры 6.1
    #38602497
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky Инициализация и выделение памяти это разные вещи.


знаю, из-за невнимательности написал


Anatoly Moskovskyб возможен только в С++

интересно, ещё одно различие подмножества С и надмножества С++
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / K&R Структуры 6.1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]