0 / 0 / 0
Регистрация: 30.01.2015
Сообщений: 40
1

Разница между объединениями и структурами

14.12.2015, 22:37. Показов 4649. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Прошу разжевать вот эту строчку :"Дополню, что из вышесказанного следует, что структура способна хранить все свои элементы одновременно, а объединение в один момент времени может интерпретироваться только как один из своих элементов." Вообщем , какая разница между struct и union?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.12.2015, 22:37
Ответы с готовыми решениями:

Разница между классами и структурами и другие моменты
Добрый день! Разбираю разницу между классами и структурами, и возник следующий вопрос при создании...

В чем разница между структурами WIN32_FIND_DATA LPWIN32_FIND_DATA LPWIN32_FIND_DATAA WIN32_FIND_DATAA
Здравствуйте. В чем разница между указанными структурами, можно ли выполнять преобразование?

Какая разница между различными сокетами (например, между 775 и 1155)?
Обясните пожалуйста какая разница между сокетами, пример есть сокет 775 и 1155 я понимаю что разем...

Отличия между структурами и классами
Объясните пожалуйста, в С++, получается, что структура отличается от класса только тем, что у нее...

5
528 / 431 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
14.12.2015, 22:47 2
Попробуй создать структуру с int x, y. Задать разные значения обоим полям. Вывести их оба. Потом сделай то же самое с объединением. Зацени разницу.
0
0 / 0 / 0
Регистрация: 30.01.2015
Сообщений: 40
14.12.2015, 23:03  [ТС] 3
В том то и дело , что не могу понять принцип такого результата:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>
#include <stdlib.h>
 
typedef struct {
    int x;
    float y;
    }iq;
typedef union {
    int x;
    float y;
}ip;
 
int main()
{
 
    iq apple;
    ip cherry;
 
    apple.x = 8;
    apple.y = 10;
 
    cherry.x = 8;
    cherry.y = 10;
 
    printf("%d, %f\n", apple.x, apple.y);
    printf("%d, %f\n", cherry.x, cherry.y);
 
 
    return 0;
}
В результате выводит: 8, 10.0000 и 109261.... и 10.0000
Почему так?
0
528 / 431 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
14.12.2015, 23:23 4
Цитата Сообщение от Vladok Посмотреть сообщение
Почему так?
Потому что в структуре x и y - это две отдельные переменные, с двумя отдельными областями памяти. А в объединении это одна область памяти на все объявленные переменные. Поэтому, записывая в одну из них, ты "повреждаешь" значение во всех остальных.
0
0 / 0 / 0
Регистрация: 30.01.2015
Сообщений: 40
14.12.2015, 23:26  [ТС] 5
А смысл тогда этого объединения?
0
528 / 431 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
14.12.2015, 23:29 6
Цитата Сообщение от Vladok Посмотреть сообщение
А смысл тогда этого объединения?
В экономии памяти. Я могу, например, при передаче данных в функцию, выставить флаг, который указывает, какие данные в объединении переданы, тогда функция возьмет их по нужному полю. Будет другой флаг - по другому полю. И мне нужно будет выделять отдельно память для всех полей. Она общая. Но для доступа используется поле с конкретным типом.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.12.2015, 23:29
Помогаю со студенческими работами здесь

Разница между ! и ~
Hellow Подскажите в чем разница между ! И ~ ? if (!true) ... if (~true) ....

Разница между <T> и <?>
Всем привет! Объясните, пожалуйста, на примере ниже отличия при использовании &lt;T&gt; и &lt;?&gt;. ...

Разница между * и all
В чем разница между select * from table1 и select all &lt;список_полей&gt; from table1? Именно в...

Разница между
Разница между gameObject и GameObject?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru