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

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

Войти
Регистрация
Восстановить пароль
 
ктумфен
1 / 1 / 0
Регистрация: 29.09.2013
Сообщений: 18
#1

Строки в стиле С - C++

13.06.2014, 22:34. Просмотров 446. Ответов 9
Метки нет (Все метки)

Здравствуйте, задумался над одной штукой:
можно ли просто написать
C++
1
char* s = "stirng";
или же нужно
C++
1
const char* s = "string";
я имею ввиду: если выбрать первый вариант, есть ли вероятность что область памяти следующая за s будет использована, ведь я не выделял для s память.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.06.2014, 22:34     Строки в стиле С
Посмотрите здесь:

Строки в стиле C - C++
Добрый вечер, решил поковыряться со строками в стиле C и наткнулся на следующую проблему. В 13-й строке компилятор ругается на то, что...

Строки в стиле C - C++
Начал изучать C++, столкнулся с проблемой. Пользователь вводит строку, нужно вывести все возможные комбинации слов из введенной...

Строки в стиле C. Часть 2 - C++
Еще раз спасибо, что помогли разобраться с вводом и чтением строк в стиле C. Появился иной вопрос - есть массив со строками в стиле C,...

Реверс строки в стиле Си - C++
Подскажите как написать собственную функцию реверса строки в стиле СИ?

строки в стиле С - cstdlib - C++
Добрый вечер) Изучаю функции, связанные со строками. Конкретно по функциям, содержащимся в заголовке <cstdlib> Библиотеку С++ смотрю вот...

Строки в стиле Си. Замена символов - C++
Дана строка символов. Преобразовать данную строку, удалив из нее каждую пару символов ‘<<’ и повторив (вставив еще раз) каждую пару...

Динамическое выделение памяти под строки в стиле Си - C++
В программе пользователь вводит строку неизвестного заранее размера. Ее нужно передать в функцию для работы с ней. Как это оформить на c++?...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
5274 / 4594 / 1539
Регистрация: 14.04.2014
Сообщений: 18,249
13.06.2014, 22:40     Строки в стиле С #2
Если s не изменяется в программе, используй второй вариант. Хотя и первый будет работать.
ктумфен
13.06.2014, 22:53  [ТС]
  #3

Не по теме:

при объявлении например:

C++
1
int x;
что записывает в память? ОС? компилятор? и при использовании new кто занимается выделением памяти?

alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.06.2014, 23:03     Строки в стиле С #4
Цитата Сообщение от ктумфен Посмотреть сообщение
или же нужно
Так правильней.
kvadro
11 / 9 / 1
Регистрация: 12.03.2012
Сообщений: 127
13.06.2014, 23:07     Строки в стиле С #5
есть ли вероятность что область памяти следующая за s будет использована, ведь я не выделял для s память.
Если я не ошибаюсь, "string" попадёт в статическую память, и сама s будет указывать на неё.

что записывает в память? ОС? компилятор? и при использовании new кто занимается выделением памяти?
Память в любом случае выделяется, разница только где: в куче или стеке.

Добавлено через 1 минуту
есть ли вероятность что область памяти следующая за s будет использована
s это указатель.
ктумфен
1 / 1 / 0
Регистрация: 29.09.2013
Сообщений: 18
13.06.2014, 23:14  [ТС]     Строки в стиле С #6
kvadro, если выделится в стек, значит ОС (или что там выделяет память) не будет использовать эту область памяти для , например объявления новых переменных?
Убежденный
Системный программист
Эксперт С++
15296 / 6928 / 1096
Регистрация: 02.05.2013
Сообщений: 11,337
Завершенные тесты: 1
13.06.2014, 23:34     Строки в стиле С #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
ктумфен, строковые литералы, во-первых, константны, то есть,
их нельзя изменять (read-only), а во-вторых, они имеют статическое время жизни,
т.е. доступны в любой момент выполнения программы. Оба эти пункта определены
стандартом языка.
Renji
1877 / 1275 / 290
Регистрация: 05.06.2014
Сообщений: 3,637
13.06.2014, 23:39     Строки в стиле С #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
что записывает в память? ОС? компилятор?
Не в память (скорее всего, в регистры), не ОС и не записывает. Выделение/освобождение памяти под локальные переменные выполняется на уровне процессора.
и при использовании new кто занимается выделением памяти?
void*operator new(size_t); Но вам пока рановато волноваться о содержимом его потрохов.
kvadro
11 / 9 / 1
Регистрация: 12.03.2012
Сообщений: 127
14.06.2014, 01:03     Строки в стиле С #9
Сообщение было отмечено автором темы, экспертом или модератором как ответ
и при использовании new кто занимается выделением памяти?
Всё является более высокоуровневой прослойкой VirtualAlloc, которая в свою очередь управляется OS.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.06.2014, 08:08     Строки в стиле С
Еще ссылки по теме:

Инициализация поля класса (строки в стиле Си): найти причину возникновения ошибки и исправить эту ошибку - C++
Начинаю учить C++ и хочу сделать что-то типо "игры" в текстовом варианте. Вот столкнулся с проблемой - хранение бонусов при ответе,...

Напишите программу, присваивающую значения элементов списка указателей на символьные строки в стиле С (тип char* ) элементам вектора строк - C++
Напишите программу, присваивающую значения элементов списка указателей на символьные строки в стиле С (тип char* ) элементам вектора строк...

Строка в стиле С - C++
Чем отличается строка в стиле классического С и С++?

Ввод/Вывод в стиле С++ - C++
Здравствуйте, я написал программу на Си и теперь мне нужно перевести её на С++. У меня есть две функции - функции ввода с клавиатуры и...

Приведение указателей в стиле си - C++
Здравствуйте, это наверное самый дурацкий вопрос но что значит скобочки в c++ т.е вот например дан код: void* p = (int *)&ip; и что...


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

Или воспользуйтесь поиском по форуму:
ктумфен
1 / 1 / 0
Регистрация: 29.09.2013
Сообщений: 18
14.06.2014, 08:08  [ТС]     Строки в стиле С #10
всем спасибо, просто развеяли туман)
Yandex
Объявления
14.06.2014, 08:08     Строки в стиле С
Ответ Создать тему
Опции темы

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