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

Объясните пожалуйста - C++

Восстановить пароль Регистрация
 
Tamoren
0 / 0 / 0
Регистрация: 08.01.2012
Сообщений: 37
09.01.2012, 04:39     Объясните пожалуйста #1
Получилось довольно много вопросов, накопилось пока читал книгу. Отблагодарю, как смогу за любую информацию
Вот они:
первый,

Как вообще возможно существование структур, содержащих указатели на самих себя?
C++
1
2
3
4
5
struct mystruct{
   int a;
   char ch;
   mystruct* sptr; // Указатель на объекты типа mystruct
};
Например, если нам нужно вычислить место, занимаемое mystruct в памяти, получается рекурсия!
второй,

Как объявить битовое поле с помощью перечисления?
третий,

В приложении 1 есть пример использования битовых полей. В выделенной строке структуре присваивается бит, полученный из функции. (Кстати, как функция может вернуть БИТ?) Чтобы обеспечить возможность такого присваивания, функция должна возвращать значение такого же типа, как принимающий его объект структуры. Почему же возможно обойтись и без этого, так, как описано в приложении 1? По аналогии написал программу:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    struct {
        binary digit0:1;
        binary digit1:1;
        binary digit2:1;
        binary digit3:1;
        binary digit4:1;
        binary digit5:1;
        binary digit6:1;
        binary digit7:1;
    } str;
    
    str = 'A';
    cout << "A: ";
 
    if(str.digit0) cout << 1;
    if(str.digit1) cout << 1;
    if(str.digit2) cout << 1;
    if(str.digit3) cout << 1;
    if(str.digit4) cout << 1;
    if(str.digit5) cout << 1;
    if(str.digit6) cout << 1;
    if(str.digit7) cout << 1;
Но она не компилируется с ошибкой
Код
C2679: binary '=' : no operator defined which takes a right-hand operand of type 'const char' (or there is no acceptable conversion)
четвертый,

В приложении 2 приведен код программы использующей объединение для перестановки двух байтов (sb.ch[0] и sb.ch[1]) в рамках короткого целого значения (sb.num = 15). 15 == 1111d, тогда в sb.ch[0] будет 00000000, а в sb.ch[1] - 00001111. Но тогда при выводе начального состояния битов будет выведено 00001111 00000000, а не 00000000 00001111. Почему же все-таки получается так, как описано в приложении 2?
пятый,

Возможна ли такая запись mystruct.elem[1] =5 ? Есть да, то что это будет значить?
Присвоения значения 5 второму элементу массива elem, являющегося членом структуры mystruct?
шестой,

Что происхот при:
C++
1
2
    int* p = NULL;
    cout << *p;
Другими словами, на что ссылается нулевой указатель? Компилятор ошибок не выдает.
седьмой,

Почему нельзя размещать код в заголовочных файлах?
восьмой.

C++
1
2
3
4
5
#ifndef _MYCLASS_H
    #define _MYCLASS_H  class myclass{
                        //Описание класса
                    };
#endif
Сказано, что заголовочные файлы обычно включают специальные константы (sentry), которые сообщают компилятору, что файл уже обработан и повторное включение не требуется.
Поправьте если не так, если _MYCLASS_H было определено как "class myclass{//Описание класса};", как в примере, то в тексте программы _MYCLASS_H заменяется на "class myclass{//Описание класса};" (без кавычек). И ещё, если _MYCLASS_H - макроимя, то не следует ли объявление класса заключить в круглые скобки?


 Комментарий модератора 
Перечитайте правила, одна тема - один вопрос. И незачем вопросы под cut прятать. Опять же названия тем должны быть осмысленными. Эта тема закрыта, оформляйте темы, как положено.
Миниатюры
Объясните пожалуйста   Объясните пожалуйста  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2012, 04:39     Объясните пожалуйста
Посмотрите здесь:

объясните пожалуйста C++
C++ объясните пожалуйста
C++ Объясните пожалуйста
Объясните пожалуйста C++
Объясните пожалуйста C++
C++ Объясните пожалуйста
Объясните пожалуйста! C++
Объясните пожалуйста C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Закрытая тема Создать тему
Опции темы

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