我试图在c++中编写一个非常简单的指针赋值:
float *src;
if(someCondition == true)
src = somePointer;
else
src = someOtherPointer;
然而,当我试图访问src时,我得到一个警告说"空指针的解引用(从变量src加载)"
同样,如果我尝试给src一些初始值,像这样:
float *src = aPointer;
if(someCondition == true)
src = somePointer;
else
src = someOtherPointer;
我得到一个警告,说分配给src的初始值永远不会被读取。尽管这似乎并不影响我正在努力做的事情,但我正在努力摆脱所有潜在的问题。这里有什么问题吗?
任何帮助都是感激的。谢谢!
由于您使用指针而不是引用,因此期望NULL
是指针的可能值。
检查NULL:
可能符合您的兴趣。if(!src) {/*handle null case*/}
假设somePointer
和someOtherPointer
中的一个或两个为0/NULL
似乎编译器不够聪明,无法意识到src
将始终被初始化。虽然IDK为什么会假设指针为NULL,但更有可能是一些垃圾值。这可能可以通过使用三元操作符(?:)将初始化设置为单个语句来解决:
float* src = someCondition ? somePointer : someOtherPointer;
编辑:尝试将src
初始化为NULL。这应该可以摆脱初始化警告,我怀疑它会创建一个未使用的值警告。