Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Полярный
 Аватар для dimcoder
477 / 449 / 158
Регистрация: 11.09.2011
Сообщений: 1,156

Недопонял... Помогите пожалуйста... Со строками...

31.10.2011, 16:28. Показов 1002. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго всем времени суток. Что объявляет следующая строка?

C++
1
char *s;
Создаётся указатель на начало строки, например как на простой вектор, или же создаётся строка? Или и то и другое? Если создаётся указатель, он содержит в себе мусор, то есть может указывать на что-угодно -> изменяя строку, мы можем изменить любые данные. Я так думаю потому-что это происходит с указателями на, скажем, int. Да и потом, нельзя ли создать строку следующим образом и не парится:

C++
1
char s[100];
Ну или проще говоря:
C++
1
2
char *string;
*string = "smth"
равняется ли:

C++
1
char string[10] = "smth";
В чём различия этих двух записей? Помогите пожалуйста...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.10.2011, 16:28
Ответы с готовыми решениями:

Помогите пожалуйста со строками в C
Необходимо решить задачку: Дана строка, содержащая последовательность слов, разделенных пробелами. Удалить из строки все слова, в которых...

Помогите пожалуйста!работа со строками, файлами
Разработайте программу, функция main() которой содержит вызов предложенной стандартной функции обработки строк и вызов пользовательской...

мальчики помогите, пожалуйста. задание со строками. объясните мне. а?
милые, хорошие выручите меня пожалуйста. в ваших руках судьба хрупкой беззащитной девушки, которой нужно сдать завтра программирование.(А...

12
Фрилансер
Эксперт С++
 Аватар для Dekio
5845 / 1226 / 499
Регистрация: 23.11.2010
Сообщений: 3,375
Записей в блоге: 1
31.10.2011, 16:36
Цитата Сообщение от dimcoder Посмотреть сообщение
оброго всем времени суток. Что объявляет следующая строка?
char *s;
Указатель на символьный тип

Цитата Сообщение от dimcoder Посмотреть сообщение
char *string; *string = "smth"
Строковый литерал

Цитата Сообщение от dimcoder Посмотреть сообщение
char string[10] = "smth";
Массив символов.

Для каждой задачи нужно выбирать конкретное решение
0
Полярный
 Аватар для dimcoder
477 / 449 / 158
Регистрация: 11.09.2011
Сообщений: 1,156
31.10.2011, 16:41  [ТС]
Цитата Сообщение от Dekio Посмотреть сообщение
char *string; *string = "smth"

Строковый литерал
А не сотрёт ли эта запись какие нибудь важные данные? Не укажет ли он на какую нибудь занятую область памяти?
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
31.10.2011, 16:41
Цитата Сообщение от dimcoder Посмотреть сообщение
В чём различия этих двух записей? Помогите пожалуйста...
Первое константа, второе можно изменять.
Есть еще третий вариант
C
1
char * str = (char *) malloc( sizeof(char) * 10 );
Это если вы на С пишите.
На с++ все вышеперечисленные варианты в общем случае желательно не использовать.
0
Фрилансер
Эксперт С++
 Аватар для Dekio
5845 / 1226 / 499
Регистрация: 23.11.2010
Сообщений: 3,375
Записей в блоге: 1
31.10.2011, 16:42
dimcoder, все зависит от того, как его использовать. В руках "одаренного человека" и обычный статический массив может стать смертельным оружием
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
31.10.2011, 16:46
Цитата Сообщение от dimcoder Посмотреть сообщение
char *string;
*string = "smth";
ты где такое увидел? Во-первых, разыменование string даст тебе символ (char), которому ты пытаешься присвоить строку. Во-вторых, ты хочешь присвоить строке литерал (константу), так почему бы не объявить string с квалификатором const?
C
1
2
const char* string;
string = "smth";
0
Полярный
 Аватар для dimcoder
477 / 449 / 158
Регистрация: 11.09.2011
Сообщений: 1,156
31.10.2011, 17:00  [ТС]
Повторю вопрос:
Цитата Сообщение от dimcoder Посмотреть сообщение
А не сотрёт ли эта запись какие нибудь важные данные? Не укажет ли он на какую нибудь занятую область памяти?
C++
1
2
const char* string;
string = "smth";
Тогда уж, наверное:

C++
1
const char *string = "smth";
?
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
31.10.2011, 17:09
Цитата Сообщение от dimcoder Посмотреть сообщение
Повторю вопрос:
нет, но попытка записи по этому адресу приведет к неопределенному поведению программы

Цитата Сообщение от dimcoder Посмотреть сообщение
Тогда уж, наверное:
не вижу принципиальной разницы
1
237 / 210 / 29
Регистрация: 08.06.2011
Сообщений: 467
31.10.2011, 17:18
dimcoder, разница была бы в таком случае:
C++
1
2
const char * const string;
string = "smth";
1
Полярный
 Аватар для dimcoder
477 / 449 / 158
Регистрация: 11.09.2011
Сообщений: 1,156
29.11.2011, 17:58  [ТС]
Извиняюсь, что долго не отвечал в своей же теме...
Цитата Сообщение от Nameless One Посмотреть сообщение
нет, но попытка записи по этому адресу приведет к неопределенному поведению программы
К какому неопределенному поведению?

Короче говоря, остался один вопрос:
C++
1
2
char *s;
s = "Hello world!"
Удалит какие нибудь данные?
PS Извиняюсь за глупые вопросы и тавтологию.
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
29.11.2011, 18:04
Цитата Сообщение от dimcoder Посмотреть сообщение
К какому неопределенному поведению?
это значит, что при выполнении такого кода может произойти что угодно. Первый же пример в википедии как раз относится к твоей теме: http://en.wikipedia.org/wiki/U... nd_C.2B.2B

Цитата Сообщение от dimcoder Посмотреть сообщение
Удалит какие нибудь данные?
нет
1
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
29.11.2011, 18:05
Цитата Сообщение от dimcoder Посмотреть сообщение
Удалит какие нибудь данные?
Не удалит, но делать так нельзя. "Hello world" в данном случае является строковым литералом и находится в области памяти "только для чтения". Указатель же не является константным.
C
1
2
const char *s = NULL;
s = "Hello world!"
1
Полярный
 Аватар для dimcoder
477 / 449 / 158
Регистрация: 11.09.2011
Сообщений: 1,156
02.12.2011, 13:30  [ТС]
fasked, Nameless One, спасибо за ответы. Более-менее прояснилось
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.12.2011, 13:30
Помогаю со студенческими работами здесь

"работа со строками"помогите пожалуйста
в строке заменить все двоеточие(:) точкой с запятой(;).подсчатать колличество замен.

немного недопонял
Есть код (немного js) <head> <meta id="meta" HTTP-EQUIV="Refresh" content ="<?php echo $_POST; ?>; URL="index.php"> ...

Недопонял условие задачи
Написать программу, подсчитывающую среднее арифметическое цифр числа N(слово), ели оно было бы представлено в десятичной системе...

Недопонял задание с IEnumerable и IEnumerator
Здравствуйте. Не совсем понял задание. В прикрепленном файле, первое задание. Я так понял что я должен написать интерфейс и применить его к...

помогите со строками на С
Даны строки A и B. Если строки состоят из одних и тех же символов и в A нет повторяющихся символов, то упорядочить символы A в алфавитном...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru