Member 13013165 Ответов: 1

[Двоичное дерево в C] почему код терпит неудачу?


Итак, у меня есть двоичное дерево, где каждый узел (скажем, v) имеет 2 дочерних элемента, один называется "атом", а другой - "клетка". В функции lval_pop, я хотел бы вернуться в "атом" ребенка, но смена сотового узла по адресу в, Поэтому, когда я разыменовать указатель на В, Я хотел бы получить узле ячейки (до Сдвига). Однако, хотя функция возвращает дочерние элементы "атома" правильно, смещения не происходит. Почему это так?

Заранее спасибо за вашу помощь!

Что я уже пробовал:

lval* lval_pop(lval* v) { 
	lval* x = v->atom;	
	if(v->cell!=NULL)
		v = v->cell;
	return x;  
}

Afzaal Ahmad Zeeshan

Как же он терпит неудачу? Вы пытались проверить его построчно, отладив его?

1 Ответов

Рейтинг:
1

Patrice T

Указатели - это одна из самых сложных вещей для новичка, только exprerience может научить вас, как они работают, а отладчик-это единственный инструмент, который может помочь вам, показав, что на самом деле делает ваш код.
----
Существует инструмент, который позволяет вам видеть, что делает ваш код, его имя-отладчик. Освоение отладчика не является обязательным, оно обязательно для любого программиста, без исключения.
Это также отличный инструмент обучения, потому что он показывает вам реальность, и вы можете увидеть, какие ожидания соответствуют реальности.
Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволяет вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения, это невероятный инструмент обучения.

Отладчик-Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010-YouTube[^]
Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.