我正在编写一个程序,其中用户输入随机数,程序将这些数字放入树中,然后放入链表中。然后要求用户输入两个边界,程序显示在最大值和最小值之间的所有数字。
。
Enter an integer or 0 to quit: 2
Enter an integer or 0 to quit: 3
Enter an integer or 0 to quit: 4
Enter an integer or 0 to quit: 5
Enter an integer or 0 to quit: 6
Enter an integer or 0 to quit: 0
The values are:
2 3 4 5 6
Enter the minimum:
2
Enter the maximum:
6
The list is: 0x3f0d58
Process returned 0 (0x0) execution time : 6.464 s
Press any key to continue.
问题是我的程序没有输出列表,而是输出0x3f0d58。
输出的函数是
void createlist() //creates linked list
{
linkednode *current;
linkednode *begin;
current=new linkednode;
current->data=data[0];
current->next=NULL;
begin=current;
for (int count=1; count<(int)data.size(); count++)
{
current=appendlist(current,data[count]);
}
cout<<"The list is: "<<begin<<endl;
}
为了得到要输出的实际数字,我应该改变什么?
您的代码输出begin
值。begin
是指向第一个节点的指针。cout
不知道它是某个特定的指针,因为如果它指向结构体A或结构体b没有区别,即使它考虑了任何区别,它也不知道应该打印哪些成员以及如何打印。因此,您必须以与添加值相同的方式手动输出值。此外,最好将数据作为函数的参数-它将看起来更连贯,并且您将避免任何全局数据。
这根本不是你使用指针的方式!
请查看:指针的描述更专门化到c++
- 指针必须始终与它所属的变量类型相同指向。
- 声明指针变量不会创建变量的类型它指向。创建一个指针变量。
- 虽然指针用星号声明,但并不总是这样与星号连用星号是一元*操作符。int *数量;
- 指针在使用之前必须初始化。初始化一个将指针赋值给变量;变量必须是与指针类型相同。
-
要将指针赋值给变量,请在变量的名字。
-
要将指针赋值给数组,不要使用&符号
s_address =字符串;
and NOT s_address= &string;
-
然而,要将指针赋值给数组"element",请使用&符号:
[2]; -
如果你在结构体中使用指针,你需要使用指针结构符号,->
没有星号,初始化的指针保存一个内存地址。带有星号的初始化指针引用存储的值在它的地址。这就是你错的地方