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

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

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

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

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

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

C++
1
char string[10] = "smth";
В чём различия этих двух записей? Помогите пожалуйста...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.10.2011, 16:28
Ответы с готовыми решениями:

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

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

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

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

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

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

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

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

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

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

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

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

Цитата Сообщение от dimcoder Посмотреть сообщение
Удалит какие нибудь данные?
нет
1
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
29.11.2011, 18:05 12
Цитата Сообщение от dimcoder Посмотреть сообщение
Удалит какие нибудь данные?
Не удалит, но делать так нельзя. "Hello world" в данном случае является строковым литералом и находится в области памяти "только для чтения". Указатель же не является константным.
C
1
2
const char *s = NULL;
s = "Hello world!"
1
Полярный
476 / 448 / 158
Регистрация: 11.09.2011
Сообщений: 1,156
02.12.2011, 13:30  [ТС] 13
fasked, Nameless One, спасибо за ответы. Более-менее прояснилось
0
02.12.2011, 13:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.12.2011, 13:30
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru