0

我正在尝试用 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 的初始值永远不会被读取。尽管这似乎并没有影响我正在尝试做的事情,但我正在努力摆脱所有潜在的问题。这里似乎有什么问题?

任何帮助表示赞赏。谢谢!

4

3 回答 3

2

somePointer可能和之一或两者someOtherPointer都是 0/NULL

于 2013-03-05T19:58:30.967 回答
2

由于您使用指针而不是引用期望NULL是您的指针的可能值。

检查 NULL 可能符合您的兴趣:

if(!src) {/*handle null case*/}
于 2013-03-05T20:00:30.820 回答
0

似乎编译器不够聪明,无法意识到它src总是会被初始化。尽管 IDK 为什么会假设指针为 NULL,但它更有可能是一些垃圾值。这可以通过使用三元运算符 (?:) 使初始化成为单个语句来解决:

float* src = someCondition ? somePointer : someOtherPointer;

编辑:

尝试初始化src为 NULL。那应该摆脱初始化警告,我怀疑它会创建一个未使用的值警告。

于 2013-03-05T20:08:48.010 回答