【发布时间】:2021-06-14 20:25:02
【问题描述】:
我有一个指向 ListNode 对象sum_ptr 的指针,它指向sum。当我通过sum_ptr 调用append 方法时,我得到一个段错误。查看gdb,我看到“this”在追加调用中是0x0,这没有意义。有谁知道为什么 sum 对象在调用 append 方法时为空?谢谢!
ListNode sum;
ListNode* sum_ptr = ∑
const ListNode* l1_ptr = &l1;
const ListNode* l2_ptr = &l2;
int c_over = 0;
while(l1_ptr != nullptr && l2_ptr != nullptr){
int temp_sum = l1_ptr->val + l2_ptr->val + c_over;
temp_sum = temp_sum >= 10 ? temp_sum - 10 : temp_sum;
c_over = temp_sum >= 10 ? 1 : 0;
sum_ptr->append(temp_sum);
sum_ptr = sum_ptr->next;
l1_ptr = l1_ptr->next;
l2_ptr = l2_ptr->next;
}
追加方法:
void ListNode::append(int v){
if(this->val == INT_MIN){
this->val = v;
}
else{
ListNode *e = new ListNode();
e->val = v;
ListNode* n = this;
while(n->next != nullptr){
n = n->next;
}
n->next = e;
}
}
【问题讨论】:
-
-
在
sum_ptr->append(temp_sum); sum_ptr = sum_ptr->next;之后,你永远不会检查sum_ptr是否为空。 -
@ianwt 在此语句之后 temp_sum = temp_sum >= 10 ? temp_sum - 10 : temp_sum; temp_sum 小于 10。所以下一条语句 c_over = temp_sum >= 10 ? 1:0;没有意义。
-
@ianwt 还有这个条件 if(this->val == INT_MIN){ this->val = v; } 没有意义。
标签: c++ pointers linked-list nullpointerexception singly-linked-list