C++:试图理解一些代码
C++: trying to understand some code
好吧,这将是一个措辞怪异(很可能很糟糕)的问题,但现在开始。所以我试图理解一个类的一些代码,但遇到了一些麻烦。我有:
这个原型:
void split_list(Poly& list1, Poly& list2);
其中Poly是指向typedef结构的typedef
然后我有了实际的功能:
void split_list(Poly* plist1, Poly* plist2){
Poly l1 = *plist1;
Poly l2 = *plist1;
Poly* pp = &l1
/*code does stuff w/ the l1 and l2 don't think the specifics are relevant to my
question*/
l2 = *pp;
(*pp) = 0;
*plist1 = l1;
*plist2 = l2;
}
我的问题是为什么我们要设置l1&l2设置为*plist1,然后在最后设置*plist1=l1和*plist2=l2?因为当我这样做的时候:
Poly l1;
Poly l2;
我遇到了一个分段错误,根据我收集到的信息,我们通过引用传递,参数需要在函数中分配值。我觉得我在这里错过了一些东西,我很感激
所有冷杉,
或者通过引用传递,或者通过指针传递。我更喜欢第一个。
第二,我认为你正在努力实现的是:1.将plist1复制到l1,将plist2复制到l2。2.你改变了l1和l2。3.将l1和l2的新值复制回plist1和plist2。
我不明白的是你为什么要抄这些课。也许有某种条件,当发生时,您必须撤消所有更改。因此,由于您没有直接更改plist1和plist2,因此您只需跳过最后一个归因。
Poly l1 = *plist1;
Poly l2 = *plist1;
因为plist1被复制到l1和l2,所以我认为这是输入列表。由于它被复制到这两个列表中,排序算法可能会根据某些标准从每个列表中删除元素。将其替换为时出现分割错误的原因
Poly l1;
Poly l2;
很可能是因为Poly结构包含一个指针,该指针不指向任何内容,并且在列表排序时被访问。
*plist1 = l1;
*plist2 = l2;
在函数的末尾,它将拆分两个列表的结果分配给plist1和plist2作为其输出形式。
相关文章:
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 代码在main()中运行,但在函数中出现错误
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 编译包含字符串的代码时遇到问题
- 我在c++代码中生成了一个运行时#3异常
- 如何在linux终端中同时编译和运行c++代码
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 在Linux for Windows上编译C++代码时出错
- 我的字符计数代码计算错误.为什么
- 孤立代码块在结构中引发异常
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 此代码是否违反一个定义规则
- 为什么我的代码在输出中增加了93天
- 我的简单if-else语句是如何无法访问的代码
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- 为什么在这个代码结束循环中没有得到结束
- 在c代码之间共享数据的最佳方式
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值