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

Указатели в Си - C++

Восстановить пароль Регистрация
 
 
Ryuk
 Аватар для Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 869
28.10.2013, 21:52     Указатели в Си #1
Добрый вечер!
Почему MinGW ругается при объявлении:
C
1
char *str[2] = {"Hello", " World!"};
Объясните пожалуйста, как со строковыми указателями вообще работать?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.10.2013, 21:53     Указатели в Си #2
C++
1
const char *str[2] = {"Hello", " World!"};
Ryuk
 Аватар для Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 869
28.10.2013, 21:58  [ТС]     Указатели в Си #3
alsav22, про константу я знаю, но в примерах книг, пишется без нее, почему?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.10.2013, 22:06     Указатели в Си #4
Цитата Сообщение от Ryuk Посмотреть сообщение
почему?
Разные компиляторы к этому по-разному относятся (сутдия, например, компилирует). Может поэтому. Но, вообще, это массив указателей на строковые литералы, поэтому должен быть константным.
Ryuk
 Аватар для Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 869
28.10.2013, 22:10  [ТС]     Указатели в Си #5
alsav22, и что тогда удобнее использовать двумерный массив символов или все же указатель?
castaway
Эксперт С++
4842 / 2981 / 367
Регистрация: 10.11.2010
Сообщений: 11,013
Записей в блоге: 10
Завершенные тесты: 1
28.10.2013, 22:15     Указатели в Си #6
Цитата Сообщение от Ryuk Посмотреть сообщение
Почему MinGW ругается при объявлении:
Ты вроде не новый человек на форуме. Так почему тебе стоит объяснять что тут не телепаты? Как ругается?
Ryuk
 Аватар для Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 869
28.10.2013, 22:16  [ТС]     Указатели в Си #7
castaway, требует чтобы была константа
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.10.2013, 22:18     Указатели в Си #8
Цитата Сообщение от Ryuk Посмотреть сообщение
alsav22, и что тогда удобнее использовать двумерный массив символов или все же указатель?
Смотря что делать.

Добавлено через 2 минуты
Тут же дело не в том, что это указатели на строки, а в том, что это указатели на литералы.
C++
1
2
3
4
5
    char *str[2];
    str[0] = new char[10];
    str[1] = new char[10];
    strcpy(str[0], "Hello");
    strcpy(str[1], " World!");
[/CPP]
Ryuk
 Аватар для Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 869
28.10.2013, 22:19  [ТС]     Указатели в Си #9
alsav22, проще говоря, мне нужно вырезать определенное кол-во слов, вводимых с клавиатуры, для дальнейшей работы с ними. Я не могу определиться, что будет лучше двумерный массив или все же строки.
castaway
Эксперт С++
4842 / 2981 / 367
Регистрация: 10.11.2010
Сообщений: 11,013
Записей в блоге: 10
Завершенные тесты: 1
28.10.2013, 22:19     Указатели в Си #10
Ryuk, для особо одарённых:
Цитата Сообщение от castaway Посмотреть сообщение
Как ругается?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.10.2013, 22:20     Указатели в Си #11
Удалил.
Ryuk
 Аватар для Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 869
28.10.2013, 22:21  [ТС]     Указатели в Си #12
castaway, invalid conversion from 'char' to 'const char*'
castaway
Эксперт С++
4842 / 2981 / 367
Регистрация: 10.11.2010
Сообщений: 11,013
Записей в блоге: 10
Завершенные тесты: 1
28.10.2013, 22:22     Указатели в Си #13
Ryuk, это ошибка, или предупреждение?
Ryuk
 Аватар для Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 869
28.10.2013, 22:23  [ТС]     Указатели в Си #14
alsav22, как сделать и так и так, я вроде как знаю, тем более не умею пока что работать с памятью.

Добавлено через 1 минуту
castaway, ошибка, хотя у некоторых на форуме было просто предупреждение.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11823 / 6802 / 769
Регистрация: 27.09.2012
Сообщений: 16,870
Записей в блоге: 2
Завершенные тесты: 1
28.10.2013, 22:24     Указатели в Си #15
Цитата Сообщение от Ryuk Посмотреть сообщение
Я не могу определиться, что будет лучше двумерный массив или все же строки.
строки - понятие растяжимое. В Вашем случае вы объявили массив из двух указателей на строковые литералы, изменение которых ведет к неопределенному поведению, поэтому и менять их нельзя, а значит и указатели лучше делать const char *
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.10.2013, 22:27     Указатели в Си #16
Цитата Сообщение от Ryuk Посмотреть сообщение
Я не могу определиться, что будет лучше двумерный массив или все же строки.
Лучше - vector, string.
Ryuk
 Аватар для Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 869
28.10.2013, 22:27  [ТС]     Указатели в Си #17
alsav22, а если это будет на Си?
castaway
Эксперт С++
4842 / 2981 / 367
Регистрация: 10.11.2010
Сообщений: 11,013
Записей в блоге: 10
Завершенные тесты: 1
28.10.2013, 22:28     Указатели в Си #18
Цитата Сообщение от Ryuk Посмотреть сообщение
castaway, ошибка, хотя у некоторых на форуме было просто предупреждение.
Не верю. У меня с флагом -pedantic выдает только предупреждение.
Ryuk
 Аватар для Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 869
28.10.2013, 22:29  [ТС]     Указатели в Си #19
castaway, это сути не меняет, сам факт(даже если это предупреждение) присутствует. Почему? Компилятор?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.10.2013, 22:30     Указатели в Си
Еще ссылки по теме:

C++ Написать программу сортировки через указатели на указатели
Указатели и массивы. Указатели и функции C++
Указатели на массивы. Указатели и функции C++

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

Или воспользуйтесь поиском по форуму:
castaway
Эксперт С++
4842 / 2981 / 367
Регистрация: 10.11.2010
Сообщений: 11,013
Записей в блоге: 10
Завершенные тесты: 1
28.10.2013, 22:30     Указатели в Си #20
Цитата Сообщение от Ryuk Посмотреть сообщение
castaway, это сути не меняет, сам факт, даже если это предупреждение, присутствует.
Решение проблемы тебе уже сказали: const char *str[2] = {"Hello", " World!"};
Yandex
Объявления
28.10.2013, 22:30     Указатели в Си
Ответ Создать тему
Опции темы

Текущее время: 10:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru