Вычисление значения элемента структуры без прямого обращения - 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)); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д