gpt4 book ai didi

c++ - 检查空指针

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:53:42 24 4
gpt4 key购买 nike

我正在构建一个 iPhone 应用程序并使用 C++,但在检查指针是否为空时遇到问题。

IMyInterface* myInterface;

if ( !myInterface ){ //doesn't work
myInterfacee->doSometing();
}

if ( myInterface != 0 ) { //doesn't work
myInterfacee->doSometing();
}

if ( myInterface != NULL ){ //doesn't work
myInterfacee->doSometing();
}

if ( myInterface != ( myInterface* )0 ) { //doesn't work
myInterfacee->doSometing();
}

无论是否设置了 myInterface,它仍然会进入每个语句并给我

程序收到信号:“EXC_BAD_ACCESS”。

我如何检查 myInterface 是否为 null

最佳答案

这里的基本问题是您还没有初始化 myInterface

假设 myInterfacee 只是一个拼写错误,下面的都没有问题,而且它们都不会调用 doSometing:

IMyInterface* myInterface = 0;

if ( myInterface ){ // ! removed
myInterface->doSometing();
}

if ( myInterface != 0 ) { // as before
myInterface->doSometing();
}

if ( myInterface != NULL ){ // as before
myInterface->doSometing();
}

if ( myInterface != ( IMyInterface* )0 ) { // IMyInterface, not myInterface
myInterface->doSometing();
}

就个人而言,我更喜欢前两个而不是第三个,根本不喜欢第四个,但这是风格问题而不是正确性问题。

If myInterface is or isn't set it still enters each statement

我有点不相信,但如果真的是这样(你正在初始化 myInterface,并且仍然看到 if (!myInterface)if (myInterface != 0) 子句被执行),那么你的程序中的其他地方有一些非常错误的地方。这些测试具有相反的含义,因此只有在发生未定义的事情时,它们才会显示为真。

关于c++ - 检查空指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4004963/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com