Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 11.05.2009
Сообщений: 3
1

Работа с двойным указателем в структуре

19.05.2009, 16:08. Показов 1077. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть такой код:
Код
typedef struct tagSTRUCT
{
	...
	TCHAR **ppszArray;
	int        nArrayCount;
	...
} STRUCT;
STRUCT st = {0};
TCHAR *strarray[] = {"str1", "str2, "strn"};
st.ppszArray = (TCHAR **)calloc((sizeof(strarray)/sizeof(*strarray)), sizeof(STRUCT)+MAX_PATH+sizeof(TCHAR))
st.nArrayCount = (sizeof(strarray)/sizeof(*strarray));
передаю указатель этой заполненной структуры в функцию. В функции пытаюсь получить строки из массива так:
Код
STRUCT *st = (STRUCT *)lParam;
for (int i = 0; i < st->nArrayCount; ++i)
{
	ListBox_AddString(hList, st->ppszArray[i]);
}
в лист бокс выводится чушь что делать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.05.2009, 16:08
Ответы с готовыми решениями:

Ошибка при работе с двойным указателем. В функциях Sort и Print Elem[i]->GetBegin не видит методы класса Edge
#ifndef EDGE_H #define EDGE_H #include &lt;iostream&gt; using namespace std; template &lt;typename...

Работа с указателем.
Доброе время суток. При чтении из файла вроде все нормально, но когда я пытаюсь вручную установить...

Работа с указателем
Есть такой указатель: char *s=&quot;n1=1&amp;n2=2&amp;name=test&amp;sername=test2&quot;; Нужно выделить с этой стоки...

Работа с указателем
Привет. Наверное очень глупый вопрос сейчас спрошу, но к вечеру пятницы голова вскипает на жаре 35...

4
Эксперт С++
2255 / 770 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
19.05.2009, 17:10 2
Я не увидел,чтобы переменная ppszArray была как-то связана со строками. Там есть только выделение памяти.

И еще такой вопрос- через сообщения передается адрес тому же процессу?
0
0 / 0 / 0
Регистрация: 11.05.2009
Сообщений: 3
19.05.2009, 17:23  [ТС] 3
Извини забыл эту строку написать (спешка), в общем там еще есть такая строка:
Код
st.ppszArray = strarray;
указатель передаю в оконную функцию своего процесса.

P.S.
Может быть memcpy или memmove надо юзать?
0
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
19.05.2009, 18:31 4
C++
1
st.nArrayCount = (sizeof(strarray)/sizeof(*strarray));
а это правильно работает?
0
0 / 0 / 0
Регистрация: 11.05.2009
Сообщений: 3
20.05.2009, 01:49  [ТС] 5
С чего ты взял что это строка может работать неправильно, я просто в структуре передаю размерность массива. можно было записать немного иначе:
Код
st.nArrayCount = (sizeof(strarray)/sizeof(strarray[0]));
но суть от этого не меняется. Может тебя лишние скобки смутили :) , но это у меня такой стиль (со скобками считать легче).

Добавлено через 4 часа 32 минуты 13 секунд
Всё разобрался, просто у меня массив строк (на который указывает ppszArray) имеет не статический класс память (он же объявлен и инициализирован в другой функции, и при выходе из функции, в которой объявлен массив, сам массив уничтожается, а ссылка то есть). На месте "убитого" массива "лежат" уже другие данные, вот они-то и выводятся в ListBox. В общем установил я для массива статический класс памяти и всё заработало.

Добавлено через 4 минуты 48 секунд
Кстати выделение паяти под ppszArray здесь совершенно лишнее, выделять нужно только под саму структуру вот так:

Код
st = (STRUCT *)calloc(1, sizeof(STRUCT));
P.S.
Во всём виновата банальная НЕВНИМАТЕЛЬНОСТЬ.
0
20.05.2009, 01:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.05.2009, 01:49
Помогаю со студенческими работами здесь

Работа с указателем
#include &lt;ntddk.h&gt; NTSTATUS PsLookupProcessByProcessId(__in HANDLE ProcessId, __out ...

Получить определенные поля класса, работая с указателем на класс, как с указателем на массив
Мне бы хотелось узнать в чем ошибка моего кода Вот мои наработки которые не работают где я...

Работа с указателем на функцию
Пытаюсь сделать указатель, принимающий строку и возвращающий вектор интов, не получается с...

Работа с указателем в функции
Доброго времени! Есть код вида: char far * pBuf; func(&amp;pBuf);

Работа с константным указателем
Ребят, добрый всем вечер!!! Помогите пожалуйста разобраться с задачей. есть константный указатель...

Работа с указателем на структуру
Здравствуйте. Во время выполнения нижеуказанного кода Visual выдаёт окно с ошибкой. Скорее всего,...


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

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