2 / 2 / 1
Регистрация: 16.01.2012
Сообщений: 6
|
|||||||||||||||||||||
1 | |||||||||||||||||||||
Массив символьных указателей16.01.2012, 01:57. Показов 2574. Ответов 11
Метки нет (Все метки)
Эксперементирую с функциями в stdlib. В данной программе конкретно atoi();
Но не в этом суть. Проблема вот в чем. Я использую в этой программе массив строчных указателей. И я хочу его инициализировать вводя значения с клавиатуры. Я пробывал сначала вот так вот
А вообще с самого начала, у меня была идея считывать сразу в указатели.
Хэлп?
0
|
16.01.2012, 01:57 | |
Ответы с готовыми решениями:
11
Массив указателей на массив строк и сортировка массива указателей Создать специфицированный шаблон функции, принимающей массив указателей на char и количество самих указателей Создать специализацию для шаблона, которая принимает массив указателей на строки и количество этих указателей Массив из указателей на масив из указателей на массив из int) |
Псевдослучайный
1946 / 1145 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
|
|
16.01.2012, 02:07 | 2 |
Это указатель на массив из четырёх элементов char. Под сам массив память не выделена.
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
16.01.2012, 02:12 | 3 |
NoMasters, нет, это массив из 4-х указателей на чар.
2
|
NoMasters
|
16.01.2012, 02:14
#4
|
Не по теме: Каюсь, время позднее, тупяк медленно подкрадывается
0
|
silent_1991
|
16.01.2012, 02:16
#5
|
Не по теме: NoMasters, так и подумал :)
0
|
2 / 2 / 1
Регистрация: 16.01.2012
Сообщений: 6
|
|
16.01.2012, 02:20 [ТС] | 6 |
А в итоге совет-овет будет?
П.С. Увидев 4 ответа, я так обрадывался. (поспешил)
0
|
Псевдослучайный
1946 / 1145 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
|
|
16.01.2012, 02:28 | 7 |
Ответ прежний: память под строки не выделена. Под все четыре, да
0
|
Заблокирован
|
||||||
16.01.2012, 03:50 | 8 | |||||
гармоничность относительна. Вполне приличная программа, единственно что можно заметить, так это то что тут
0
|
200 / 87 / 9
Регистрация: 15.11.2010
Сообщений: 472
|
||||||||||||||||
16.01.2012, 05:04 | 9 | |||||||||||||||
Ха, а задачка решена не без изящества.
Понравилась вот эта конструкция
Единственное, если не нравится это
Естественно, что массивы str1, str2, str3, str4 и соответствующая строка, определяющая их, больше не нужны. Попробуйте сделать это и скомпилировать программу, я точно не уверен, под рукой компилятора C/C++ нет.
0
|
200 / 87 / 9
Регистрация: 15.11.2010
Сообщений: 472
|
||||||||||||||||
16.01.2012, 06:11 | 11 | |||||||||||||||
Есть такая необходимость. Представьте, что число строк фиксировано, но велико. Что, для каждой создавать в программе (в исходном тексте) отдельную переменную, со своим именем? Другой вариант, когда количество строк само по себе величина переменная, тогда как прикажете быть?
А главное посмотрите, с чего ТС начал свой вопрос. Он привел пример исходника с ошибкой, вот он
Я ему лишь помог решить его задачу. Если бы у ТС такой задачи не стояло, он бы и не стал задавать вопрос на форуме. Так что уважаемый alkogolik Вы, отвечая на вопрос, все-таки исходите не из своего видения программирования, а из того, чего хотел добиться задававший вопрос человек и в чем он испытал трудность. А так, конечно, в такой несложной задаче оба варианта приемлемы, оба решают задачу, я и не спорю. Добавлено через 15 минут Да, и кстати, если не нравится динамически выделять память из кучи, можно и такой вариант использовать. Вместо char *s[4]; (массив указателей) объявить s как двумерный массив (массив массивов) char s[4][10]; И тогда кусок исходного текста, как его хотел видеть ТС for(int i = 0; i <= 3; i++) cin >> s[i]; заработает вполне корректно. А именно
Если же объявлять s как char *s[4]; то так нельзя, подойдут два предыдущих варианта (вариант ТС с объявленными строками str1,... str4 и мой с использованием кучи).
0
|
Заблокирован
|
|
16.01.2012, 06:25 | 12 |
JohnyWalker, расписал, ну да ладно. Собственно мои сабжи касательны только этого предложения
И, если угодно, моя оценка ситуации. Программа хорошая, менять ничего не надо, предусмотреть переполнение целого числа. Все что выше - не интересует (лишнее место в памяти ). Представить мы можем и жабу вместо носа, а по факту имеем совсем ничего - 40 ascii + 20 байт данных не считая ключевых слов syscall's. Потому и говорю что локать память прямой необходимости нету. Ну да ладно, написали что к чему, пусть переваривает.
0
|
16.01.2012, 06:25 | |
16.01.2012, 06:25 | |
Помогаю со студенческими работами здесь
12
Массив из n символьных строк Задача на массив символьных строк. Запись указателей в массив указателей Чем отличаются двумерный символьный массив и массив указателей на строки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |