我刚刚得到了这个简单的编程... 我们来看看:
#include <iostream>
using namespace std;
struct node
{
int i;
node *nxt;
};
int main()
{
node *head = NULL, *temp = NULL;
head->i = 10;
temp->i = 20;
head->nxt = temp;
temp->nxt = NULL;
cout << head->i << "-" << head->nxt << endl;
cout << temp->i << "-" << temp->nxt << endl;
return 0;
}
我真的不知道是什么问题!!它给了我DEV,VS,代码块和一些运行时和一些编译错误......
任何人都可以回答吗?
提前致谢!
答案 0 :(得分:0)
按以下方式写主要
node node1, node2;
node *head = &node1, *temp = &node2;
head->i = 10;
temp->i = 20;
head->nxt = temp;
temp->nxt = NULL;
cout << head->i << "-" << head->nxt << endl;
cout << temp->i << "-" << temp->nxt << endl;
另一种方法是动态分配内存。例如
#include <iostream>
#include <memory>
struct node
{
int i;
node *nxt;
};
int main()
{
std::unique_ptr<node> head( new node );
std::unique_ptr<node> temp( new node );
head->i = 10;
temp->i = 20;
head->nxt = temp.get();
temp->nxt = nullptr;
std::cout << head->i << "-" << head->nxt << std::endl;
std::cout << temp->i << "-" << temp->nxt << std::endl;
return 0;
}
程序输出可能看起来像
10-0x8745018
20-0
答案 1 :(得分:0)
您正尝试取消引用NULL指针。您可以像这样使用new
,为指向指针的内存分配内存。
#include <iostream>
using namespace std;
struct node
{
int i;
node *nxt;
};
int main()
{
node *head = new node, *temp = new node;
head->i = 10;
temp->i = 20;
head->nxt = temp;
temp->nxt = NULL;
cout << head->i << "-" << head->nxt << endl;
cout << temp->i << "-" << temp->nxt << endl;
delete head;
delete temp;
}
答案 2 :(得分:0)
#include <iostream>
using namespace std;
struct node
{
int i;
node *nxt;
};
int main()
{
node head, temp;
head.i=10;
temp.i=20;
head.nxt=&temp;
temp.nxt=NULL;
cout<<head.i<< " - " <<head.nxt<< endl;
cout<<temp.i<< " - " <<temp.nxt<< endl;
return 0;
}
或强>
#include <iostream>
using namespace std;
struct node
{
int i;
node *nxt;
};
int main()
{
node *head=NULL;
head = new node;
node *temp=NULL;
temp = new node;
head->i=10;
temp->i=20;
head->nxt=temp;
temp->nxt=NULL;
cout<<head->i<< " - " <<head->nxt<< endl;
cout<<temp->i<< " - " <<temp->nxt<< endl;
return 0;
}
区别在于第一个使用堆栈用于内存而第二个用于堆!
再次感谢:)