Итак, я пытался конвертировать BST в DLL, используя некоторые заданные функции, которые мне пришлось использовать. Делая это, я продолжал получать ошибки сегментации. Когда я попытался отладить его, я, наконец, пришел к этому. Я написал очень простой тестовый сценарий ниже.C++ проблемы с указателями при создании узлов
То, что я знал о указателях, передается по ссылке, так как в том случае, если я изменяю значение/объект, к которому указывает переданный указатель, он отражается в моей исходной функции вызова.
Почему это происходит, когда я создаю новый узел, а затем передаю указатель (myf), он работает, но когда я просто передаю указатель и создаю новый узел внутри функции, он показывает ошибку сегментации (myf2)?
Если это связано с тем, что новый узел выходит из сферы действия, снова проверьте функцию «myf». Я создал новый узел, на который указывает мой оригинальный узел. И значение этого сохраняется после завершения вызова функции. Разве это тоже не выходит за рамки?
У меня есть некоторые основные фундаментальные проблемы с указателями, которые появляются, и это действительно поможет. Благодаря
#include<iostream>
using namespace std;
class Node
{
public:
int val;
Node *left;
};
void myf(Node *a)
{
a->left = new Node();
a->left->val = 20;
a->val = 15;
}
void myf2(Node *a)
{
a = new Node();
a->val = 35;
}
int main()
{
Node *a = NULL, *b = NULL;
a = new Node();
a->val = 5;
myf(a);
cout << "New value of a = " << a->val << endl;
cout << "left value of a = " << a->left->val << endl;
myf2(b);
cout << "New value of b = " << b->val << endl;
}
где указатель 'right'? –
Игнорируйте скобки, которые я дал после узла(). При инициализации не требуется. – user3370135
Привет Rikayan. Это тестовый код. Никакой логики или мотивов этой программы. Я был в середине более сложного кода, поэтому я написал этот тестовый код, чтобы найти, что происходит не так. Пожалуйста, сосредоточьтесь на том, что здесь. Благодарю. – user3370135