0 / 0 / 0
Регистрация: 03.03.2014
Сообщений: 34
|
||||||
1 | ||||||
Работа с динамическим массивом структур10.03.2016, 12:08. Просмотров 1117. Ответов 12
Метки нет Все метки)
(
Односвязный список. Проблема (скорее всего) в строке ListPoint1[num] = pointer; Pointer использую как временный элемент, чтобы потом записать его в конкретный элемент списка ListPoint1[num].
Собственно в чём вопросы: 1. Как правильно передавать в функцию указатели (двойной или обычный), как я понимаю, если передать обычный указатель, то в main функции переменная не изменится. 2. Можно ли выделить память под конкретный элемент и не использовать вспомогательный для записи в список, например ListPoint1[num] = (list*)malloc... и тд? Если добавлю [num] в данный код, то выдает ошибку. 3. Как правильно произвести присвоение ListPoint1[num] = pointer;. Поставил брейкпоинт и посмотрел в дебаге, что записано в ListPoint1, показывает что NULL, то есть я делаю что то не так? И после завершения этой функции ( AddBegin) выдает ошибку, говорит, что я выхожу за пределы массива.
UP Неужели никто не может пояснить хотя бы один момент?
0
|
|
10.03.2016, 12:08 | |
Работа с динамическим массивом Работа с динамическим одномерным массивом Работа с динамическим двумерным массивом |
|
87 / 87 / 80
Регистрация: 25.08.2013
Сообщений: 338
|
||||||
10.03.2016, 14:01 | 2 | |||||
Для передачи в функцию двумерного массива
Если об этом
0
|
3404 / 2785 / 1251
Регистрация: 29.01.2016
Сообщений: 9,423
|
|
10.03.2016, 14:10 | 3 |
Тут нужно новую память выделять под блок указателей, копировать туда старый блок, потом добавлять новый указатель.
Добавлено через 5 минут Смотря как этот указатель используется в функции: если значение указателя (адрес в нём) в функции не меняется, то можно передавать по значению, если меняется, то передавать по ссылке.
0
|
0 / 0 / 0
Регистрация: 03.03.2014
Сообщений: 34
|
||||||
10.03.2016, 14:23 [ТС] | 4 | |||||
0
|
3404 / 2785 / 1251
Регистрация: 29.01.2016
Сообщений: 9,423
|
|
10.03.2016, 14:26 | 5 |
И вообще, списки так не делаются. В том и преимущество списков, что, в отличие от массивов, при добавлении нового элемента в список, не нужно память под весь список перевыделять.
Добавлено через 2 минуты Покажи, что передаётся в функцию как ListPoint1? У тебя, выделена память под num указателей, ты, в функции, меняешь значение num: Выделенная память от этого автоматически не увеличится.
0
|
0 / 0 / 0
Регистрация: 03.03.2014
Сообщений: 34
|
||||||
10.03.2016, 14:28 [ТС] | 6 | |||||
У меня память под каждый отдельно выделяется и не перевыделяется) А то что есть нумерация элементов так это потому, что должна быть функция добавления после указанного элемента
num - это номер элемента списка, допустим я добавляю в начало, я увеличиваю его на 1 (получается это первый элемент списка) num - глобальная int num = 0; Что передается и как вызывается
0
|
0 / 0 / 0
Регистрация: 03.03.2014
Сообщений: 34
|
|
10.03.2016, 14:38 [ТС] | 8 |
Я "думал", что допустим если num = 1, то в первый элемент списка (массива структур) запишется временная структура pointer
0
|
3404 / 2785 / 1251
Регистрация: 29.01.2016
Сообщений: 9,423
|
|
10.03.2016, 14:43 | 9 |
![]() Решение
Память у тебя под указатель ListPoint не выделяется, потом обращаешься с ListPoint, как с массивом указателей:
Добавлено через 2 минуты Мой тебе совет: набери в поиске по форуму "списки" (или "список") и посмотри, как списки делаются.
1
|
0 / 0 / 0
Регистрация: 03.03.2014
Сообщений: 34
|
|
10.03.2016, 14:44 [ТС] | 10 |
А можно вот выделить с помощью malloc сразу под ListPoint[num] ? Почему компилятор не хочет воспринимать такое? Если написать ListPoint = .. всё хорошо, вроде и то и то указатели
0
|
3404 / 2785 / 1251
Регистрация: 29.01.2016
Сообщений: 9,423
|
||||||
10.03.2016, 14:52 | 11 | |||||
Выделить можно (используй new, а не malloc, тут всё-таки С++, а не Си), но ты в принципе не то делаешь.
0
|
0 / 0 / 0
Регистрация: 03.03.2014
Сообщений: 34
|
|
10.03.2016, 14:55 [ТС] | 12 |
0
|
3404 / 2785 / 1251
Регистрация: 29.01.2016
Сообщений: 9,423
|
||||||
10.03.2016, 15:07 | 13 | |||||
Тогда, для Си есть свой форум: https://www.cyberforum.ru/c-beginners/
Добавлено через 5 минут
0
|
10.03.2016, 15:07 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь. Работа с матрицей, представленной динамическим массивом
Работа с динамическим массивом (Упорядочить его по возрастанию элементов в каждом столбце) Работа с массивом структур Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |