线路抑制状态错误 C4703 可能未初始化的局部指针变量"back"已使用
Line Suppression State Error C4703 potentially uninitialized local pointer variable 'back' used
我收到错误,指出我有一个可能未初始化的局部指针变量,我不确定为什么。
Link *popBck(Link *list, int &val) {
if (!list)return 0;
Link *front = list, *back;
while (front->ptr) {
back = front;
front = front->ptr;
}
val = front->data;
delete front;
back->ptr = 0;
return list;
}
您在此处不初始化back
:
Link *front = list, *back;
并且对back
的唯一赋值可能无法执行,因为它是有条件的:
while (front->ptr) { // This condition could be false...
back = front; // ... in which case this doesn't happen.
front = front->ptr;
}
这将导致您在此处取消引用未初始化的back
:
back->ptr = 0;
最好始终初始化变量。
您还需要一个单一实例列表的特殊情况,您应该在其中返回空指针。
如果将back
初始化为 null 指针,则当您的列表只有一个元素时,它将恰好为 null。
像这样:
Link *popBack(Link *list, int &val) {
if (!list) return nullptr;
Link *front = list, *back = nullptr;
while (front->ptr) {
back = front;
front = front->ptr;
}
val = front->data;
delete front;
if (!back)
{
return nullptr;
}
else
{
back->ptr = 0;
return list;
}
}
相关文章:
- 使用的未初始化局部变量'Quick'
- 修复未初始化的局部变量错误
- 局部变量保留函数中的值
- 为什么 'main' 函数中的局部 int 变量会自动初始化?
- 如何使用 C++ 中的继承函数访问派生类中的局部变量
- 将引用分配给局部变量,如果局部变量超出范围,它会超出范围吗?
- Gnuplot_i.hpp C++接口绘制局部变量而不是文件
- 如何在函数外部访问函数中局部变量的值?
- 赋予全局变量而不是局部变量优先级的函数 - (异常行为)
- C++中静态方法的局部变量范围
- 未初始化的局部变量错误甚至认为我初始化了它(C++)
- 离开范围后如何保护局部变量的值?
- 局部变量名称冲突
- C++ lambda:如何'freeze'局部变量的值?
- 我应该使我的局部变量常量还是可移动的
- 获取具有静态局部变量的绑定/推断捕获 lambda 的函数指针
- 全局和局部变量初始化与 constexpr 的差异背后的基本原理
- 返回对局部变量 - C++ 的引用
- 函数局部静态变量:从性能角度来看的优点/缺点
- 关于读取有效 c++ 第 4 项(将非局部静态变量替换为局部静态变量)的问题