C ++链表奇怪的帮助
c ++ linked list weird Helpp?
我的代码在这里:
#include <iostream>
using namespace std;
struct Mhs
{
int nim;
char nama[10];
Mhs *next;
};
void fs(Mhs *m)
{
m = m->next;
}
int main()
{
int i;
Mhs mhs[2] = { {1, "Alice", &mhs[1]}, {2, "Bob", &mhs[0]} };
Mhs *m = &mhs[0];
fs(m);
for(i = 0; i < 2; i++)
{
cout << m->nama << ":" << m->nim << " ";
m = m->next;
}
cout << endl;
return 0;
}
为什么输出是:爱丽丝:1 鲍勃:2但已经执行了函数 fs ()
但是,如果我删除 fs(m); 并替换 m = m->next; 那么输出将是这样的:鲍勃:2 爱丽丝:1
有什么不同???????
void fs(Mhs *m) 表示您正在将另一个指针分配给另一个变量。
Mhs *m = &mhs[0];
Mhs *m1 = m; // fs(m); <<<<<<
m1 = m1->next; // <<<<<<<<<
for(i = 0; i < 2; i++)
{
cout << m->nama << ":" << m->nim << " ";
m = m->next;
}
将与您的代码相同。
在这里,您对函数参数 (m) 使用相同的变量,但 c++ 明智地它是不同的变量。
要获得效果,您可以按以下步骤操作:
void fs(Mhs **m)
{
*m = (*m)->next;
}
在C++中传递指向链表的指针
请检查此代码
struct Mhs
{
int nim;
char nama[10];
Mhs *next;
};
void fs(Mhs **m)
{
*m = (*m)->next;
}
int main()
{
int i;
Mhs mhs[2] = { {1, "Alice", &mhs[1]}, {2, "Bob", &mhs[0]} };
Mhs *m = &mhs[0];
fs(&m);
for(i = 0; i < 2; i++)
{
cout << m->nama << ":" << m->nim << " ";
m = m->next;
}
cout << endl;
return 0;
}
相关文章:
- 反向给定链表中的K节点
- 如果没有malloc,链表实现将失败
- 文本文件中的单词链表
- 努力将整数转换为链表。不知道我在这里做错了什么
- 链表,反向函数,数据结构
- 我需要一些帮助来理解一些涉及C++链表的代码
- 需要帮助,需要计算链表中负值的数量,C++
- C ++链表奇怪的帮助
- 尝试在链表程序的末尾进行更简单的插入.小问题需要帮助
- C++帮助-从链表中泄漏数据和分段错误
- C++:调试通用链表所需的帮助
- 请帮助我理解链表c++中的运算符重载=
- c++链表节点计数(需要帮助)
- 需要帮助编码迭代器的循环链表在c++
- c++链表帮助(指针)
- 如何使用析构函数清除链表内存,而不会出现valgrind错误?[更新:操作员过载帮助]
- 帮助C++中的双重链表
- 链表需要帮助无法打印我的数据.想要添加功能.在 C - C++ 中
- 双重链表的帮助
- 帮助使用链表模板