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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.09.2012, 17:45   #1
COOLik123
 
Регистрация: 11.05.2012
Сообщений: 9
По умолчанию Не могу присвоить полю структуры значение NULL (язык Си, Visual Studio)

Проблема такая:
есть структура
Код:
struct mnog {
	int number;
	int index;
	struct mnog *next;
	struct mnog *prior;
};
С помощью её хочу реализовать двусвязный список. Я объявляю указатели на структуры:
Код:
struct mnog *Mnog1, *Last;
Далее я для первого элемента списка хочу присвоить:
Код:
	Mnog1->prior=NULL;
	Mnog1->next=NULL;
При отладке проекта на этом месте вылетает необработанное исключение и нарушение прав доступа при записи 0x0000000c, также открывается файл mlock.c и зелёная стрелочка указывает на строку: LeaveCriticalSection( _locktable[locknum].lock );

Объясните пожалуйста, в чем проблема.
COOLik123 вне форума Ответить с цитированием
Старый 16.09.2012, 18:06   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
в чем проблема
Скорее всео в том что сам Mnog1 у тебя NULL, а соответственно у него еще нет свойства prior
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.09.2012, 18:16   #3
COOLik123
 
Регистрация: 11.05.2012
Сообщений: 9
По умолчанию

А если я хочу пройти по двусвязному списку. Мне необходимо, чтобы указатель на предыдущий элемент(для первого элемента) и указатель на следующий элемент(для последнего элемента) были NULL. Как это можно сделать?

У меня возник ещё вопрос к Stilet, в какой момент тогда появляется свойство prior, если не при его инициализации?

Последний раз редактировалось Stilet; 16.09.2012 в 18:35.
COOLik123 вне форума Ответить с цитированием
Старый 16.09.2012, 18:31   #4
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:
если не при его инициализации?
А покажите-ка инициализацию
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 16.09.2012, 18:37   #5
COOLik123
 
Регистрация: 11.05.2012
Сообщений: 9
По умолчанию

Ну,да. Сглупил. При объявлении. Ведь объявлена сама структура и переменная типа структуры, не значит ли, что уже можно работать е полями структуры?

Последний раз редактировалось COOLik123; 16.09.2012 в 18:40.
COOLik123 вне форума Ответить с цитированием
Старый 16.09.2012, 18:40   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
в какой момент тогда появляется свойство prior, если не при его инициализации?
Если это указатель то свойство это можно использовать только после "создания" обьекта, после размещения его в памяти скажем через new или alloc().
Если бы это не было указателем ты бы уже после загрузки программы смог с ним полноценно работать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.09.2012, 18:50   #7
COOLik123
 
Регистрация: 11.05.2012
Сообщений: 9
По умолчанию

Вот так?
Код:
struct mnog *p;
p=(struct mnog *)malloc(sizeof(struct mnog));
p=NULL;
Mnog1->prior=p;
COOLik123 вне форума Ответить с цитированием
Старый 16.09.2012, 19:03   #8
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

нет не так!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 16.09.2012, 19:05   #9
COOLik123
 
Регистрация: 11.05.2012
Сообщений: 9
По умолчанию

А как тогда это сделать?

Hacker19_90, не молчите, пожалуйста. Скажите как правильно?

Последний раз редактировалось Stilet; 16.09.2012 в 20:05.
COOLik123 вне форума Ответить с цитированием
Старый 16.09.2012, 19:21   #10
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

ну пости же всё правильно сделали!
Вот только не с тем указателем
Вам нужно идентифицировать указатель Mnog1
допустим так
Код:
Mnog1 =  new mnog;
а уже потом с полями работать
Код:
Mnog1->prior=NULL;
Mnog1->next=NULL;
PS: new замените на malloc alloc итд
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C# Visual Studio присвоить строке символ S-vet-a Помощь студентам 4 07.05.2012 14:22
как присвоить полю из БД значение из combobox (Delphi) Ilya130190 Помощь студентам 1 13.03.2012 10:48
как в Delphi присвоить полю DBEdit целочисленное значение поля из DBText (как правильно )? ГОСЕАН Помощь студентам 0 10.01.2012 06:12
не могу разобраться с типами в Visual Studio VB alexz29 Microsoft Office Excel 0 13.10.2010 20:17
VISUAL STUDIO 2008 defaul language - как переключить в VISUAL STUDIO 2008 язык программирования, использ Эйнж Общие вопросы C/C++ 0 27.12.2009 20:39