Вычисление значения элемента структуры без прямого обращения - C (СИ)
Формулировка задачи:
Всем привет, прошу помощи!Задача такая.
Необходимо написать функцию которая вычисляет значение элемента из структуры типа float
Обычно мы можем использовать обращение -> или ".", в нашем случае нельзя.
Есть ли какие либо альтернативы?Из очевидных инструментов используем побайтовое выравнивание.Остальное только
через указатели и математику)Подскажите, пожалуйста, есть ли способы или дайте подсказку где узнать.
Листинг программы
- #include "stdafx.h"
- #include <locale.h>
- #include <string.h>
- #include <memory.h>
- #include <malloc.h>
- #include <conio.h>
- #pragma pack(push,1)//Выравниваем побайтовое хранение по 1
- struct Data
- {
- int numb;
- float numb_count;//элемент структуры который необходимо найти
- double numb_better;
- char symb[10];
- };
- #pragma pack(pop)
- float Numb_count(Data *variable);//функция для вычисления значения float из структуры
- int _tmain(int argc, _TCHAR* argv[])
- {
- setlocale(LC_ALL, "rus");
- Data variable={3,3.5,3.555,{"HELLO"}};//Переменная структуры из которой необходимо найти float
- Data *P=(Data*)malloc(sizeof(Data));
- if(!P)
- {
- printf("Ошибка malloc\n");
- _getch();
- return 0;
- }
- return 0;
- }
- float Numb_count(Data *variable)
- {
- float search_numb=0;
- ///Вот тут необходимо найти значения переменной из структуры DATA (3.5)
- //Data.numb_count или Data->numb_count использовать нельзя
- return search_numb;
- }
Решение задачи: «Вычисление значения элемента структуры без прямого обращения»
textual
Листинг программы
- #include <stdio.h>
- struct Data
- {
- int numb;
- float numb_count;
- double numb_better;
- char symb[10];
- };
- float Numb_count (struct Data *);
- int main(void) {
- struct Data var01 = {3, 3.5, 3.555, {"HELLO"}};
- struct Data var02 = {4, 4.6, 5.678, {"hallo"}};
- printf("float var1: %f\n", Numb_count(&var01));
- printf("float var2: %f\n", Numb_count(&var02));
- return 0;
- }
- float Numb_count (struct Data *var) {
- return *(float*)((char*)var + sizeof(int));
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д