我试图在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的初始值。尽管这似乎并没有影响到我想要做的事情,但我试图摆脱所有潜在的问题。这里似乎有什么问题?
感谢任何帮助。谢谢!
答案 0 :(得分:3)
大概somePointer
和someOtherPointer
中的一个或两个是0 / NULL
答案 1 :(得分:2)
由于您使用指针而不是引用,因此期望NULL
成为指针的可能值。
检查NULL可能符合您的利益:
if(!src) {/*handle null case*/}
答案 2 :(得分:0)
似乎编译器不够聪明,无法意识到src
将始终被初始化。虽然IDK为什么会认为poiter是NULL,但更有可能是垃圾值。这可以通过使用三元运算符(?:):
float* src = someCondition ? somePointer : someOtherPointer;
编辑:
尝试将src
初始化为NULL。这应该摆脱初始化警告,我怀疑它会创建一个未使用的值警告。