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

Выделение памяти под переменную в структуре - C++

Восстановить пароль Регистрация
 
Wladius
12 / 7 / 2
Регистрация: 06.01.2013
Сообщений: 127
23.04.2013, 09:47     Выделение памяти под переменную в структуре #1
Например есть структура
C++
1
2
3
4
5
struct StrDL
{
    char Str;
    char Simv;
};
и как выделить память под Str ? Типа этого например char *Str=(char*)malloc(1);

Добавлено через 9 минут
C++
1
2
3
4
5
6
7
8
9
10
11
struct StrDL
{
    char *Str;
    char Simv;
};
 
int main()
{
StrDL Stroka;
 
Stroka.Str=(char*)malloc(1);
Так правильно?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2013, 09:47     Выделение памяти под переменную в структуре
Посмотрите здесь:

C++ выделение памяти под переменную
Выделение памяти под строку C++
выделение памяти под wchar_t C++
C++ Выделение памяти под структуры
C++ выделение памяти под структуру
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
23.04.2013, 09:55     Выделение памяти под переменную в структуре #2
C++
1
Stroka.Str=(char*)malloc(1*sizeof(char));
Но, поскольку мы в разделе С++, лучше
C++
1
Stroka.Str=new char;
Tulosba
:)
Эксперт C++
4377 / 3220 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
23.04.2013, 10:33     Выделение памяти под переменную в структуре #3
Выделять 1 символ через new это, конечно, круто
И, кстати, sizeof(char) по определению 1.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
23.04.2013, 10:46     Выделение памяти под переменную в структуре #4
Цитата Сообщение от Tulosba Посмотреть сообщение
sizeof(char) по определению 1.
С чего бы это? Для уникода - 2.
Tulosba
:)
Эксперт C++
4377 / 3220 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
23.04.2013, 10:59     Выделение памяти под переменную в структуре #5
zss, стандарт С++ 5.3.3
sizeof(char), sizeof(signed char) and sizeof(unsigned char) are 1.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
23.04.2013, 11:09     Выделение памяти под переменную в структуре #6
Решил проверить про 2 байта и получил интересный результат:
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
int main()
{
    wchar_t x=L'Ы';
    std::cout<<x<<endl;
    int i=sizeof(x);
    std::cout<<i<<endl;
    return 0;
}
Вместо буквы Ы выводится
1067
nonedark2008
623 / 501 / 92
Регистрация: 28.07.2012
Сообщений: 1,338
23.04.2013, 11:13     Выделение памяти под переменную в структуре #7
zss, двухбайтные символы выводятся при помощи wcout. А для русских еще нужно локаль сменить.
Tulosba
:)
Эксперт C++
4377 / 3220 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
23.04.2013, 11:14     Выделение памяти под переменную в структуре #8
zss, так wchar_t это же не char. И cout это не wcout.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
23.04.2013, 11:27     Выделение памяти под переменную в структуре #9
М-дааа! Не все ладно в Датском королевстве!
Можно было бы перегрузить cout для wchar_t,
да и устанавливать локаль в уникоде - нонсенс.
Tulosba
:)
Эксперт C++
4377 / 3220 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
23.04.2013, 11:44     Выделение памяти под переменную в структуре #10
Цитата Сообщение от zss Посмотреть сообщение
Можно было бы перегрузить cout для wchar_t,
Так cout это тип basic_ostream<char>, а wcout - basic_ostream<wchar_t>
ValeryS
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,038
23.04.2013, 11:48     Выделение памяти под переменную в структуре #11
Цитата Сообщение от Wladius Посмотреть сообщение
C++
1
2
3
4
5
struct StrDL
{
    char Str;
    char Simv;
};
сам разницу видишь??

Цитата Сообщение от Wladius Посмотреть сообщение
C++
1
2
3
4
5
struct StrDL
{
    char *Str;
    char Simv;
};
в первом случае char во втором указатель
для первого случая нельзя
для второго выделяй сколько душе угодно
не забудь потом удалить
Tulosba
:)
Эксперт C++
4377 / 3220 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
23.04.2013, 12:05     Выделение памяти под переменную в структуре #12
Цитата Сообщение от ValeryS Посмотреть сообщение
сам разницу видишь??
Я думаю, в первом сообщении ТС просто ошибся, поэтому и внес исправления в код.

Добавлено через 14 минут
Интересно, ТС все сообщения в ветке плюсует?
Wladius
12 / 7 / 2
Регистрация: 06.01.2013
Сообщений: 127
23.04.2013, 12:07  [ТС]     Выделение памяти под переменную в структуре #13
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Tulosba Посмотреть сообщение
Интересно, ТС все сообщения в ветке плюсует?
Абсолютно все, люди же старались писали, надо и плюсануть)
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
23.04.2013, 20:08     Выделение памяти под переменную в структуре #14
Цитата Сообщение от Tulosba Посмотреть сообщение
Так cout это тип basic_ostream<char>, а wcout - basic_ostream<wchar_t>
Так это в тот же огород: перегрузка для разных параметров существует,
а для разных возвращаемых значений - нет!
Tulosba
:)
Эксперт C++
4377 / 3220 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
23.04.2013, 20:21     Выделение памяти под переменную в структуре #15
Цитата Сообщение от zss Посмотреть сообщение
Так это в тот же огород: перегрузка для разных параметров существует,
а для разных возвращаемых значений - нет!
Потому что возвращаемый параметр может быть проигнорирован.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.04.2013, 14:29     Выделение памяти под переменную в структуре
Еще ссылки по теме:

Выделение памяти под массивы C++
Выделение памяти под структуру C++
выделение памяти под структуру C++

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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор FAQ
30.04.2013, 14:29     Выделение памяти под переменную в структуре #16
Wladius, с учётом твоих тем на форуме м.б ты такое хотел
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
struct
{
    const char * sDIGIT;
    char  chDIGIT;
}DIGITS [] = 
{   
    {"ZERO", '0'},
    {"ONE" , '1'},
    {"TWO" , '2'},
    {"THREE",'3'}, 
    {"FOUR", '4'},
    {"FIVE", '5'},
    {"SIX",  '6'},
    {"SEVEN",'7'}, 
    {"EIGHT",'8'}, 
    {"NINE", '9'},
    {NULL ,  '\0'}
};
Yandex
Объявления
30.04.2013, 14:29     Выделение памяти под переменную в структуре
Ответ Создать тему
Опции темы

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