0 / 0 / 0
Регистрация: 11.05.2009
Сообщений: 3
|
|
1 | |
Работа с двойным указателем в структуре19.05.2009, 16:08. Показов 1077. Ответов 4
Метки нет (Все метки)
Есть такой код:
Код
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
|
19.05.2009, 16:08 | |
Ответы с готовыми решениями:
4
Ошибка при работе с двойным указателем. В функциях Sort и Print Elem[i]->GetBegin не видит методы класса Edge Работа с указателем. Работа с указателем Работа с указателем |
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 | |||||
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)); Во всём виновата банальная НЕВНИМАТЕЛЬНОСТЬ.
0
|
20.05.2009, 01:49 | |
20.05.2009, 01:49 | |
Помогаю со студенческими работами здесь
5
Работа с указателем Получить определенные поля класса, работая с указателем на класс, как с указателем на массив Работа с указателем на функцию Работа с указателем в функции Работа с константным указателем Работа с указателем на структуру Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |