Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
ктумфен
1 / 1 / 0
Регистрация: 29.09.2013
Сообщений: 18
1

Строки в стиле С

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

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

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

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

C++ в функциональном стиле: как писать в стиле C#/LINQ (без дополнительных библиотек)?
Как писать в стиле C#/LINQ (без дополнительных библиотек)? Вот, допустим, есть...

строки в стиле С - cstdlib
Добрый вечер) Изучаю функции, связанные со строками. Конкретно по функциям,...

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

9
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
13.06.2014, 22:40 2
Если s не изменяется в программе, используй второй вариант. Хотя и первый будет работать.
0
ктумфен
13.06.2014, 22:53  [ТС]
  #3

Не по теме:

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

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

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

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

Добавлено через 1 минуту
есть ли вероятность что область памяти следующая за s будет использована
s это указатель.
1
ктумфен
1 / 1 / 0
Регистрация: 29.09.2013
Сообщений: 18
13.06.2014, 23:14  [ТС] 6
kvadro, если выделится в стек, значит ОС (или что там выделяет память) не будет использовать эту область памяти для , например объявления новых переменных?
0
Убежденный
Ушел с форума
Эксперт С++
15997 / 7268 / 1179
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
13.06.2014, 23:34 7
Лучший ответ Сообщение было отмечено ктумфен как решение

Решение

ктумфен, строковые литералы, во-первых, константны, то есть,
их нельзя изменять (read-only), а во-вторых, они имеют статическое время жизни,
т.е. доступны в любой момент выполнения программы. Оба эти пункта определены
стандартом языка.
1
Renji
2105 / 1545 / 471
Регистрация: 05.06.2014
Сообщений: 4,484
13.06.2014, 23:39 8
Лучший ответ Сообщение было отмечено ктумфен как решение

Решение

что записывает в память? ОС? компилятор?
Не в память (скорее всего, в регистры), не ОС и не записывает. Выделение/освобождение памяти под локальные переменные выполняется на уровне процессора.
и при использовании new кто занимается выделением памяти?
void*operator new(size_t); Но вам пока рановато волноваться о содержимом его потрохов.
1
kvadro
12 / 10 / 1
Регистрация: 12.03.2012
Сообщений: 127
14.06.2014, 01:03 9
Лучший ответ Сообщение было отмечено ктумфен как решение

Решение

и при использовании new кто занимается выделением памяти?
Всё является более высокоуровневой прослойкой VirtualAlloc, которая в свою очередь управляется OS.
1
ктумфен
1 / 1 / 0
Регистрация: 29.09.2013
Сообщений: 18
14.06.2014, 08:08  [ТС] 10
всем спасибо, просто развеяли туман)
0
14.06.2014, 08:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.06.2014, 08:08

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

Строки в стиле Си. Замена символов
Дана строка символов. Преобразовать данную строку, удалив из нее каждую пару...

Динамическое выделение памяти под строки в стиле Си
В программе пользователь вводит строку неизвестного заранее размера. Ее нужно...


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

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

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