Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Dmitriy78781
0 / 0 / 0
Регистрация: 13.12.2011
Сообщений: 53
#1

Как передать в функцию число и структуру побайтно? - C++

01.03.2012, 11:06. Просмотров 871. Ответов 4
Метки нет (Все метки)

Здравствуйте!!! Нужно написать функцию которая принимает некую структуру и число побайтно.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.03.2012, 11:06     Как передать в функцию число и структуру побайтно?
Посмотрите здесь:

Как передать в функцию строку и инициализировать ею структуру? C++
C++ как передать структуру в функцию, чтобы после выполнения функции он(массив в данном случае) вернулся измененным?
C++ Как передать указатель на структуру в функцию
C++ Как отправить структуру в функцию?
C++ Как передать в функцию указатель на структуру, если эта структура не определена глобально?
C++ Передать структуру в функцию другого класса
C++ Как передать в функцию заранее неизвестное число параметров?
Как передать функцию в функцию? C++
C++ Не получается передать структуру в функцию
C++ Как передать в функцию ссылку на структуру?
Как передать указатель на структуру так, чтобы потом иметь возможность корректно удалить его? C++
Передать структуру в функцию C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Xind
275 / 148 / 7
Регистрация: 05.11.2011
Сообщений: 425
Записей в блоге: 1
01.03.2012, 17:06     Как передать в функцию число и структуру побайтно? #2
Dmitriy78781, Могу предположить, что это можно сделать через void*. В функции преобразовываете указатель на байт (например, unsigned char) и читаете до конца данных. Только саму структуру нужно организовать правильно с выравниванием. Как то так.
Nameless One
Эксперт С++
 Аватар для Nameless One
5760 / 3409 / 255
Регистрация: 08.02.2010
Сообщений: 7,406
01.03.2012, 17:27     Как передать в функцию число и структуру побайтно? #3
Цитата Сообщение от Xind Посмотреть сообщение
Могу предположить, что это можно сделать через void*
а почему бы сразу не через unsigned char* ?
Xind
275 / 148 / 7
Регистрация: 05.11.2011
Сообщений: 425
Записей в блоге: 1
01.03.2012, 17:30     Как передать в функцию число и структуру побайтно? #4
Цитата Сообщение от Nameless One Посмотреть сообщение
а почему бы сразу не через unsigned char* ?
можно подробнее. Если в фун. будет параметр unsigned char* и ему передать указатель на структуру, то будет работать?
Этим не занимался, точно сказать не могу. Можно пример?
Nameless One
Эксперт С++
 Аватар для Nameless One
5760 / 3409 / 255
Регистрация: 08.02.2010
Сообщений: 7,406
01.03.2012, 17:39     Как передать в функцию число и структуру побайтно? #5
Цитата Сообщение от Xind Посмотреть сообщение
можно подробнее. Если в фун. будет параметр unsigned char* и ему передать указатель на структуру, то будет работать?
почему бы и нет? Указатель можно свободно скастовать к любому другому типу указателя:
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
31
32
33
34
35
36
#include <stdio.h>
#include <stdlib.h>
 
void print_bytes(const unsigned char* bytes, size_t size)
{
    size_t i;
 
    printf("%08u: ", size);
    
    for(i = 0; i < size; ++i)
    printf("%03u ", bytes[i]);
    putchar('\n');
}
 
struct s
{
    int i;
    double d;
};
 
int main(void)
{
    int i = 42;
    int j = 512;
    int k = 100500;
 
    struct s s = {900, 415.89};
        
    print_bytes((unsigned char*) &i, sizeof(i));
    print_bytes((unsigned char*) &j, sizeof(j));
    print_bytes((unsigned char*) &k, sizeof(k));
 
    print_bytes((unsigned char*) &s, sizeof(s));
        
    exit(0);
}
Yandex
Объявления
01.03.2012, 17:39     Как передать в функцию число и структуру побайтно?
Ответ Создать тему
Опции темы

Текущее время: 14:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru