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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
ЛеЖиК)
157 / 60 / 1
Регистрация: 29.04.2011
Сообщений: 641
#1

Вопрос про char - C++

10.10.2011, 15:29. Просмотров 1169. Ответов 19
Метки нет (Все метки)

Пожалуйста обьясните доступным языком в чем разница между объявлениями, и какие когда лучше использовать
C++
1
2
3
char a[5];
char  *c;
char b=new char[5]
в интернете много по этому поводу есть, но их сравнения я не нашел
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2011, 15:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вопрос про char (C++):

Вопрос по Char - C++
Вот в чем суть я токо изучаю С++ токо неделю (самоучка по книге Шилдта) раньше програмировал на Паскале. Как я понял переменная типа Char...

_itoa,вопрос по char* - C++
В MSDN описана функция char *_itoa( int value, char *str, int radix ); В примере

Вопрос об особенности char и конструкторах - C++
1. Хочу вывести на экран таблицу символов ascii: #include <iostream> int main() { unsigned short T; for...

преобразвоание int в char. речь не про atoi - C++
помогите разобраться, как происходит преобразование из int в char. например: int i =1000; char k=232; cout<<(int)k;каким образом на...

вопрос про скобки - C++
Здравствуйте, получил задание написать программу, смысл которой заключается в умножении матрицы на столбец. Матрица статическая, функция...

Вопрос про std:: - C++
std::cout << "Hello, world!" << std::endl; а можно cout << "Hello, world!" <<endl; std пространство имен... где про это...

19
diagon
Higher
1930 / 1196 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
10.10.2011, 15:35 #2
Первое - статический массив из 5 элементов.
Второе - указатель на символ.
Третье - некорректно.
1
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
10.10.2011, 15:36 #3
C++
1
2
3
char a[5]; //статический массив из 5 элементов
char  *c;  //указатель
char b=new char[5]  //ошибка, надо char *b=new char[5] - динамический массив
1
ЛеЖиК)
157 / 60 / 1
Регистрация: 29.04.2011
Сообщений: 641
10.10.2011, 15:38  [ТС] #4
gooseim, да, в третьем опечатался
так вопрос что лучше использовать и при каких случаях
0
gitarillo
720 / 520 / 24
Регистрация: 17.06.2010
Сообщений: 1,012
Записей в блоге: 1
10.10.2011, 15:39 #5
ЛеЖиК), все так, как сказал
diagon. Нельзя переменной типа char присвоить массив.
Цитата Сообщение от ЛеЖиК) Посмотреть сообщение
и какие когда лучше использовать
Первое для работы с массивами символов.
Второе - с указателями на символ.
0
ЛеЖиК)
157 / 60 / 1
Регистрация: 29.04.2011
Сообщений: 641
10.10.2011, 15:47  [ТС] #6
Цитата Сообщение от gitarillo Посмотреть сообщение
с указателями на символ.
разве можно использовать только один символ?
тоесть такой код неправельный
C++
1
2
char *c;
strcpy(c,"asd\0");
0
diagon
Higher
1930 / 1196 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
10.10.2011, 15:50 #7
Цитата Сообщение от ЛеЖиК) Посмотреть сообщение
разве можно использовать только один символ?
Неправильный, потому что c указывает на мусор.
Если он будет указывать на выделенную память, т.е. что-то вроде такого
C++
1
2
char * c = new char[100500];
strcpy(c, "asd");
то корректно
1
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
10.10.2011, 15:55 #8
например
C++
1
2
3
char c;
char *cptr = &c;
scanf("%c", cptr);
так корректно.
1
ЛеЖиК)
157 / 60 / 1
Регистрация: 29.04.2011
Сообщений: 641
10.10.2011, 16:19  [ТС] #9
вроде почти разобрался
так есть какая нибудь разница между
C++
1
2
char a[5];
char *b=new char[5];
и еще вопрос, после использования и надо написать
C++
1
delete [] b;
а переменную а надо чистить?
0
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
10.10.2011, 16:20 #10
ЛеЖиК), для b лучше писать delete[], а a сама очистится, ничего с ней делать не надо.
0
fasked
Эксперт С++
4945 / 2525 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
10.10.2011, 16:26 #11
Цитата Сообщение от ЛеЖиК) Посмотреть сообщение
так есть какая нибудь разница между
Разница есть. Время жизни объекты `a' ограничено ближайшей областью видимости, то есть объект 'a' существует в пределах ближайших скобок { }. Для объекта `b' память выделяется в несколько другом сегменте и его время жизни ограничивается самим программистом. Если забыть очистить память вызовом delete, то объект будет существовать все время работы программы.
1
ЛеЖиК)
157 / 60 / 1
Регистрация: 29.04.2011
Сообщений: 641
10.10.2011, 16:26  [ТС] #12
или я что не понемаю, или зачем тогда нужен new, если с char ом все просто и он сам очишается( не возникает утечек

Добавлено через 25 секунд
fasked, спасибо, разъяснил
0
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
10.10.2011, 16:27 #13
ЛеЖиК), в основном используют new когда сразу неизвестно число элементов массива.
0
ЛеЖиК)
157 / 60 / 1
Регистрация: 29.04.2011
Сообщений: 641
10.10.2011, 16:29  [ТС] #14
и еще вопрос
если я правельно понял, то глобальные пееременные лучше объявлять с помошью new
а переменные в функцие с помошью char
0
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
10.10.2011, 16:31 #15
ЛеЖиК), если создан статический массив n[x] глобально, то он тоже будет жить пока жива программа, как если бы он был создан с помощью new.
0
10.10.2011, 16:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2011, 16:31
Привет! Вот еще темы с ответами:

Вопрос про файлы - C++
где распологать текстовый файл, чтобы программа видела его сразу без прописания директории? пишу в VS

Вопрос про реестр - C++
Здравствуйте господа програмисты!У меня есть программа,честно сознаюсь скачал с интернета и переделал не много,поэтому не доконца...

Вопрос про палиндромы - C++
Такая вот задачка по програмированию С++: Ввести рядок символов и составить масив слов-палиндромов (читаются одинаково с права на лево и...

Вопрос про ф-ию mul - C++
Расскажите пожалуйста про ф-ию mul, перегружаемую в классе. Что она делает?


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

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

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