Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
49 / 33 / 9
Регистрация: 27.12.2017
Сообщений: 1,398
1

Приравнивание указателя одного типа к указателю другого

23.08.2019, 00:53. Показов 2308. Ответов 22
Метки нет (Все метки)

Есть структура :
C++
1
2
3
4
5
6
7
struct hci_inquiry_req {
    uint16_t dev_id;
    uint16_t flags;
    uint8_t  lap[3];
    uint8_t  length;
    uint8_t  num_rsp;
};
есть кусок кода :
C++
1
2
3
4
5
6
7
8
struct hci_inquiry_req *ir;
void *buf;
buf = malloc(sizeof(*ir) + (sizeof(inquiry_info) * (nrsp)));
ir = buf;
ir->dev_id  = dev_id;
ir->num_rsp = num_rsp;
ir->length  = len;
ir->flags   = flags;
что делает вообще ir = buf?

Добавлено через 16 минут
Это случаем не равносильно hci_inquiry * ir = new hci_inquiry [5]?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.08.2019, 00:53
Ответы с готовыми решениями:

Преобразование указателя одного типа в указатель другого
Помоги пожалуйста составить программу: Преобразовать указатель одного типа в указатель другого.

Как присвоить указателю значение другого указателя внутри процедуры?
Подскажите пожалуйста. Вот я хочу одному указателю присвоить значение другого указателя внутри...

Forbids casting в dlsym - ISO C++ не поддерживает приведение типа указателя на функцию к указателю на объект
Есть вот такой пример загрузки .so #include <iostream> #include <dlfcn.h> int main() { ...

Приведение одного парметра-типа к другому разыменованному парметру-типу (указателю) в шаблонах
Здравствуйте! изучаю C++, и есть такой вопрос, можно ли при инстанцировании, допустим, шаблонной...

22
С чаем беда...
Эксперт CЭксперт С++
9073 / 4605 / 1250
Регистрация: 18.10.2014
Сообщений: 10,304
23.08.2019, 15:06 21
Цитата Сообщение от ReYalp Посмотреть сообщение
так как там как бы должна создаваться копия объекта ,но еслси она не создается то какой смысл его использовать? Неявного преобразования и так ввыходит что нету
В современной спецификации ключевое слово explicit на конструкторе запрещает использование конструктора для выполнения неявных преобразований и для выполнения инициализации копированием. Поэтому для варианта test q = 5; ничего не поменялось: если конструктор является explicit, то этот вариант компилироваться не будет.

Я не понимаю вопроса про "какой смысл". Ничего не поменялось: explicit как и раньше блокирует неявные преобразования. Вы не понимаете, в чем смысл блокирования неявных преобразований?
0
49 / 33 / 9
Регистрация: 27.12.2017
Сообщений: 1,398
23.08.2019, 16:23  [ТС] 22
TheCalligrapher, неявное преобразование в случае с
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
test q = 5;
вызовет конструктор для 5,
test(5) который вернет объект типа test и произойдет копирование test q = test(5) тоесть неявная инициализация,разве не так? От этого и может защитить explicit,но Вы выше написали что никакого копирования не произойдет и компилятор сразу заменит код выше на test q(5) и тогда не произойдет неявной инициализации и тогда нету смысла в explicit
0
С чаем беда...
Эксперт CЭксперт С++
9073 / 4605 / 1250
Регистрация: 18.10.2014
Сообщений: 10,304
23.08.2019, 17:40 23
Цитата Сообщение от ReYalp Посмотреть сообщение
test(5) который вернет объект типа test и произойдет копирование test q = test(5) тоесть неявная инициализация,разве не так?
У вас наблюдается какая-то странная завязка на то, что explicit якобы предназначен для предотвращения неких "неявных инициализаций".

Это не так.

explicit предназначен для предотвращения неявных преобразований. test q = 5 - это очевидное неявное преобразование (слева - test, справа - int). explicit предотвращает это преобразование. Вот и все. Где вы в этом увидели, что "нету смысла в explicit" - мне в упор не ясно.

А создается там промежуточный временный объект в процессе этого преобразования или не создается - на это explicit глубоко наплевать. К explicit это никакого отношения не имеет.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.08.2019, 17:40

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Перенос данных из переменной одного типа в переменную другого типа
Добрый день! Одна часть программы размещает полученные данные(символы) в ПЕРЕМ1 типа ustring ( или...

Как вызвать из одного класса (для метода типа void) метод типа boolean другого класса?
ребят, только учусь и конечно, вопросов возникает много. ситуация вот в чем. есть массив. я должна...

Ссылка одного типа на объекты другого
class Program { static void Main(string args) { A b = new B(); A c =...

Приравнивание/Сравнение переменных типа char
Вообщем, есть такой вопрос, мне нужно приравнять в условии одну переменную типа char к какому...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.