Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2011, 13:11   #1
петя иванов
Новичок
Джуниор
 
Регистрация: 07.04.2011
Сообщений: 1
По умолчанию указатель на указатель

Проблема следующая:
Хочу записать в массив указателей типа char слова. Их количество не известно.
Делаю так:
Код:
char **f = (char**) malloc ( sizeof(char) );
int i = 0;
char buffer[10]; //для примера
//в буфер попадают некоторые слова и я их записываю далее

f[i] = new char;
f[i] = buffer;
i++;
Но на практике получается, что в получившемся массиве хранится только последнее значение buffer. Где то косяк, но где и как его решить пока не очень понятно.
петя иванов вне форума Ответить с цитированием
Старый 07.04.2011, 15:02   #2
ololo-schoolboy
Форумчанин
 
Регистрация: 25.12.2010
Сообщений: 247
По умолчанию

Цитата:
f[i] = new char;
f[i] = buffer;
вы не копируете сам buffer, вы копируете указатель

ps я не пользовался malloc, но наверно это так (char**) malloc (n*sizeof(char*));
new лучше - new char*[n];
ololo-schoolboy вне форума Ответить с цитированием
Старый 07.04.2011, 18:09   #3
niki123
Пользователь
 
Регистрация: 12.03.2011
Сообщений: 16
По умолчанию

Если нужно создать массив указателей, каждый элемент которого ссылается на отдельное слово то вот так:
Код:
char *massivUkazateley[4] = { "Слово1", "Слово2", "Слово3", "Слово4" };
niki123 вне форума Ответить с цитированием
Старый 10.04.2011, 01:42   #4
EC.cpp
Пользователь
 
Регистрация: 09.04.2011
Сообщений: 30
По умолчанию

Кроме всего вышесказанного - стоит подумать нужно ли Вам использование указателей для хранения строк - обычно их используют для минимизации использования памяти компьютера.
К примеру массив слов можно хранить в виде списков и вполне успешно с таковыми работать.
EC.cpp вне форума Ответить с цитированием
Старый 10.04.2011, 02:21   #5
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

лучше использовать std::vector<char*> а еще лучше std::vector<string> и все эти проблемы отпадают
onewho вне форума Ответить с цитированием
Старый 10.04.2011, 02:23   #6
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Цитата:
К примеру массив слов можно хранить в виде списков
А сами слова в виде объектов класса string.
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Указатель... Romario92 Общие вопросы C/C++ 16 22.10.2010 20:37
Указатель RobinVit Помощь студентам 3 05.05.2010 16:18
Указатель this Golovastik Общие вопросы C/C++ 8 16.01.2010 10:30
(!)указатель на указатель(!) (C)stalin(Cpp) Общие вопросы C/C++ 0 07.06.2009 15:32
Указатель n на m CESHNIK Общие вопросы C/C++ 7 07.03.2008 23:35