Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
183 / 182 / 56
Регистрация: 10.06.2011
Сообщений: 871
1

Указатели в Си

28.10.2013, 21:52. Показов 1397. Ответов 30
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер!
Почему MinGW ругается при объявлении:
C
1
char *str[2] = {"Hello", " World!"};
Объясните пожалуйста, как со строковыми указателями вообще работать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.10.2013, 21:52
Ответы с готовыми решениями:

Указатели и указатели на указатели, а также типы данных
Недавно начал изучать Си, перешел с Delphi. Много непонятного и пока процесс идет медленно....

Почему Лафоре использует указатели на указатели, вместо обмена значениями указателей?
Доброго времени суток! Задался теоретическим вопросом. Читал пример из книги Лафоре...

В matlab есть указатели на переменные или что-нибудь похожее на указатели?
Здравствуйте, в matlab есть указатели на переменные? или что-нибудь похожее на указатели? нужно...

Через указатели на указатели посчитать сумму двух чисел и записать в третье
1. Через указатели на указатели посчитать сумму двух чисел и записать в третье. 2. Написать...

30
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
28.10.2013, 21:53 2
C++
1
const char *str[2] = {"Hello", " World!"};
0
183 / 182 / 56
Регистрация: 10.06.2011
Сообщений: 871
28.10.2013, 21:58  [ТС] 3
alsav22, про константу я знаю, но в примерах книг, пишется без нее, почему?
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
28.10.2013, 22:06 4
Цитата Сообщение от Ryuk Посмотреть сообщение
почему?
Разные компиляторы к этому по-разному относятся (сутдия, например, компилирует). Может поэтому. Но, вообще, это массив указателей на строковые литералы, поэтому должен быть константным.
0
183 / 182 / 56
Регистрация: 10.06.2011
Сообщений: 871
28.10.2013, 22:10  [ТС] 5
alsav22, и что тогда удобнее использовать двумерный массив символов или все же указатель?
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
28.10.2013, 22:15 6
Цитата Сообщение от Ryuk Посмотреть сообщение
Почему MinGW ругается при объявлении:
Ты вроде не новый человек на форуме. Так почему тебе стоит объяснять что тут не телепаты? Как ругается?
0
183 / 182 / 56
Регистрация: 10.06.2011
Сообщений: 871
28.10.2013, 22:16  [ТС] 7
castaway, требует чтобы была константа
0
5498 / 4893 / 831
Регистрация: 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]
0
183 / 182 / 56
Регистрация: 10.06.2011
Сообщений: 871
28.10.2013, 22:19  [ТС] 9
alsav22, проще говоря, мне нужно вырезать определенное кол-во слов, вводимых с клавиатуры, для дальнейшей работы с ними. Я не могу определиться, что будет лучше двумерный массив или все же строки.
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
28.10.2013, 22:19 10
Ryuk, для особо одарённых:
Цитата Сообщение от castaway Посмотреть сообщение
Как ругается?
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
28.10.2013, 22:20 11
Удалил.
0
183 / 182 / 56
Регистрация: 10.06.2011
Сообщений: 871
28.10.2013, 22:21  [ТС] 12
castaway, invalid conversion from 'char' to 'const char*'
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
28.10.2013, 22:22 13
Ryuk, это ошибка, или предупреждение?
0
183 / 182 / 56
Регистрация: 10.06.2011
Сообщений: 871
28.10.2013, 22:23  [ТС] 14
alsav22, как сделать и так и так, я вроде как знаю, тем более не умею пока что работать с памятью.

Добавлено через 1 минуту
castaway, ошибка, хотя у некоторых на форуме было просто предупреждение.
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
28.10.2013, 22:24 15
Цитата Сообщение от Ryuk Посмотреть сообщение
Я не могу определиться, что будет лучше двумерный массив или все же строки.
строки - понятие растяжимое. В Вашем случае вы объявили массив из двух указателей на строковые литералы, изменение которых ведет к неопределенному поведению, поэтому и менять их нельзя, а значит и указатели лучше делать const char *
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
28.10.2013, 22:27 16
Цитата Сообщение от Ryuk Посмотреть сообщение
Я не могу определиться, что будет лучше двумерный массив или все же строки.
Лучше - vector, string.
0
183 / 182 / 56
Регистрация: 10.06.2011
Сообщений: 871
28.10.2013, 22:27  [ТС] 17
alsav22, а если это будет на Си?
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
28.10.2013, 22:28 18
Цитата Сообщение от Ryuk Посмотреть сообщение
castaway, ошибка, хотя у некоторых на форуме было просто предупреждение.
Не верю. У меня с флагом -pedantic выдает только предупреждение.
0
183 / 182 / 56
Регистрация: 10.06.2011
Сообщений: 871
28.10.2013, 22:29  [ТС] 19
castaway, это сути не меняет, сам факт(даже если это предупреждение) присутствует. Почему? Компилятор?
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
28.10.2013, 22:30 20
Цитата Сообщение от Ryuk Посмотреть сообщение
castaway, это сути не меняет, сам факт, даже если это предупреждение, присутствует.
Решение проблемы тебе уже сказали: const char *str[2] = {"Hello", " World!"};
0
28.10.2013, 22:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.10.2013, 22:30
Помогаю со студенческими работами здесь

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

Указатели на указатели с числами. Почему можно присвоить число в 4-ый элемент, если массив из 2 элементов?
Есть массив int **mas; mas=new int*; // выделил место под пять строк, верно ? mas=new int;//...

Есть три переменные. Используя указатели на указатели, поменять значение максимальной и минимальной переменной
Мой код. #include <iostream> #include <stdlib.h> #include<iomanip> using namespace std; ...

Зачем нужны все эти указатели (или не указатели)
Зачем надо DWORD, HANDLE, LPVOID?

Указатели на указатели: для чего они могут понадобятся?
Изучаю C++, дошёл до указателей на указатели. Там пишут что эта тема не обязательна. Для чего они...

Указатели на указатели, как правильно разыменовать, где ошибка?
1)Есть класс: Shape - абстрактный; у него есть классы наследники: Circle, Triangle. 2)Eсть...


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

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