Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
foo();
886 / 587 / 222
Регистрация: 03.07.2013
Сообщений: 1,549
Записей в блоге: 2
1

Расположение полей структуры в памяти

02.06.2015, 22:00. Показов 2235. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нифига себе на что плюсы способны...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "stdafx.h"
#include <time.h>
#include <stdlib.h>
#include <iostream>
 
using namespace std;
 
typedef struct {
    double x, y, z;
} point;
 
 
int main()
{
    point p = { 0, 0, 0 };
    srand(time(NULL));
    for (int i = 0; i < 3; i++)
        (&(p.x))[i] = rand() % 10001 / (double)1000;
    printf("( %g, %g, %g)\n", p.x, p.y, p.z);
}

Сразу возникают вопрос, всегда ли такой фокус сработает. Можно ли гарантировать, что данные находятся в памяти именно в том порядке, в каком определены? Может могут возникнуть подводные камни?))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.06.2015, 22:00
Ответы с готовыми решениями:

Расположение полей структуры в памяти
Есть структура MyStruct содержащая в себе два поля int. Есть массив объектов MyStruct....

Расположение в памяти полей и методов класса
помогите пожалуйста с вопросом: расположение в памяти полей и методов класса

Совместите объявление и инициализацию структуры. После инициализации структуры выполните изменение ее полей с последующи
Написать программу структурного описания каталога одной книги. ...

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

5
Котовчанин
942 / 482 / 200
Регистрация: 16.02.2010
Сообщений: 3,338
Записей в блоге: 37
03.06.2015, 12:22 2
rattrapper, а в чем фокус? Я здесь ничего необычного не увидела.
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
03.06.2015, 12:36 3
Цитата Сообщение от Тамика Посмотреть сообщение
а в чем фокус?
В том, что в цикле используется адрес только первого поля структуры для инициализации всех полей.

Добавлено через 7 минут
Цитата Сообщение от rattrapper Посмотреть сообщение
Может могут возникнуть подводные камни?
Выравнивание.
1
Котовчанин
942 / 482 / 200
Регистрация: 16.02.2010
Сообщений: 3,338
Записей в блоге: 37
03.06.2015, 12:40 4
Цитата Сообщение от lss Посмотреть сообщение
В том, что в цикле используется адрес только первого поля структуры для инициализации всех полей.
Это понятно. Потому и спрашиваю - в чем фокус. Думала, что что-то не так поняла. Но нет. И вроде как ничего магического. Ну да ладно.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
03.06.2015, 12:55 5
Цитата Сообщение от rattrapper Посмотреть сообщение
Сразу возникают вопрос, всегда ли такой фокус сработает. Можно ли гарантировать, что данные находятся в памяти именно в том порядке, в каком определены?
Не всегда. Порядок гарантировать можно, но каждый член может иметь своё выравнивание. Выравнивание double может быть больше sizeof( double ).

3.11
An alignment is an implementation-defined integer value representing the number of bytes between successive addresses at which a given object can be allocated.
1
foo();
886 / 587 / 222
Регистрация: 03.07.2013
Сообщений: 1,549
Записей в блоге: 2
03.06.2015, 16:57  [ТС] 6
Тамика, просто я пришел с языков более высокого уровня, где так беспредельничать не принято
lss, castaway, спасибо!
0
03.06.2015, 16:57
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.06.2015, 16:57
Помогаю со студенческими работами здесь

Оформление формы (расположение полей)
Доброго времени суток всем. Столкнулся с проблемой оформления в форме. Суть в том, что по какой...

CREATE VIEW, расположение полей
Здравствуйте. Смотрите на поле ava =&gt; create or replace view members_view as select m.id,...

Как сохранить расположение полей в форме?
Исходные данные: Есть форма (Default View = Single Form, разрешены все Allow на вкладке свойств...

Расположение структуры
Преподаватель докопался с вопросом: в чем разница если описать структуру внутри и снаружи main'a...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Какой язык программировани­я лучший для разработки нейронных сетей
InfoMaster 20.01.2025
В современном мире технологий искусственные нейронные сети становятся неотъемлемой частью множества инновационных решений, от распознавания речи до автоматического управления транспортными. . .
Как подключить JavaScript файл в другом JavaScript файле
InfoMaster 20.01.2025
В современной веб-разработке организация кодовой базы играет ключевую роль в создании масштабируемых и поддерживаемых приложений. Модульность и правильное структурирование кода стали неотъемлемыми. . .
Как откатить изменения в исходниках, не внесенные в Git
InfoMaster 20.01.2025
При работе с системой контроля версий Git разработчики часто сталкиваются с необходимостью отменить внесенные изменения в исходном коде. Особенно актуальной становится ситуация, когда изменения еще. . .
В чем разница между px, in, mm, pt, dip, dp, sp
InfoMaster 20.01.2025
В мире цифрового дизайна и разработки интерфейсов правильный выбор единиц измерения играет ключевую роль в создании качественного пользовательского опыта. История развития систем измерений для. . .
Как изменить адрес удалённого репозитория (origin) в Git
InfoMaster 20.01.2025
В терминологии Git термин origin является стандартным именем для основного удаленного репозитория, с которым взаимодействует локальная копия проекта. Когда разработчик клонирует репозиторий с. . .
Как переместить последние коммиты в новую ветку (branch) в Git
InfoMaster 20.01.2025
При работе над проектом часто возникают ситуации, когда необходимо изолировать определенные изменения от основной линии разработки. Это может быть связано с экспериментальными функциями, исправлением. . .
Как вернуть результат из асинхронной функции в JavaScript
InfoMaster 20.01.2025
Асинхронное программирование представляет собой фундаментальную концепцию в JavaScript, которая позволяет выполнять длительные операции без блокировки основного потока выполнения программы. В. . .
Какой локальный веб-сервер выбрать
InfoMaster 19.01.2025
В современной веб-разработке локальные веб-серверы играют ключевую роль, предоставляя разработчикам надежную среду для создания, тестирования и отладки веб-приложений без необходимости использования. . .
Почему планшеты и iPad уже не так популярны, как раньше
InfoMaster 19.01.2025
Эра революционных инноваций История планшетов началась задолго до того, как эти устройства стали привычными спутниками нашей повседневной жизни. В начале 1990-х годов появились первые прототипы,. . .
Как самому прошить BIOS ноутбука
InfoMaster 19.01.2025
BIOS (Basic Input/ Output System) представляет собой важнейший компонент любого компьютера или ноутбука, который обеспечивает базовое взаимодействие между аппаратным и программным обеспечением. . .
Какой Linux выбрать для домашнего компьютера
InfoMaster 19.01.2025
Современные реалии выбора операционной системы В современном мире выбор операционной системы для домашнего компьютера становится все более важным решением, которое может существенно повлиять на. . .
Как объединить два словаря одним выражением в Python
InfoMaster 19.01.2025
В мире программирования на Python работа со словарями является неотъемлемой частью разработки. Словари представляют собой мощный инструмент для хранения и обработки данных в формате "ключ-значение". . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru