相关疑难解决方法(0)

未检测到空指针

我是C ++的新手。我希望没有指向任何东西的两个指针将被检测为空指针。但是,这仅适用于其中之一。这些指针的物理地址有些不同-0xe00000001与0x0(此指针正确检测为空指针)。

我编写了以下代码段:

#include <iostream>
using namespace std;

struct TNode {
    TNode* Parent;  // Pointer to the parent node
    TNode* Left;  // Pointer to the left child node
    TNode* Right;  // Pointer to the right child node
    int Key;  // Some data
};

int main() {
    TNode parent;
    parent.Key = 2;
    TNode first;
    first.Key = 1;
    first.Parent = &parent;
    parent.Left = &first;
    cout << first.Left << endl; // get 0xe00000001 here
    cout << first.Right <<endl; // get 0x0

    if (first.Right …
Run Code Online (Sandbox Code Playgroud)

c++

2
推荐指数
1
解决办法
82
查看次数

对于NULL指针,我应该使用NULL还是0?

重复

你在C++中使用NULL或0作为指针吗?

处理NULL指针时可以做到这一点

if(ptr != NULL){ ... }

or this

if(ptr != 0){ ... }
Run Code Online (Sandbox Code Playgroud)

是否有理由偏爱另一个C++

c++ null pointers

1
推荐指数
2
解决办法
900
查看次数

检查NULL时要忽略多少位?

以下使用seg-V崩溃:

// my code
int* ipt;
int bool set = false;
void Set(int* i) {
  ASSERT(i);
  ipt = i;
  set = true;
}

int Get() {
  return set ? *ipt : 0;
}

// code that I don't control.
struct S { int I, int J; }
int main() {
  S* ip = NULL;
  // code that, as a bug, forgets to set ip...
  Set(&ip->J);
  // gobs of code
  return Get();
}
Run Code Online (Sandbox Code Playgroud)

这是因为虽然i它不是NULL仍然无效.如果调用代码从NULL指针获取数组索引操作的地址,则会发生同样的问题.

对此的一个解决方案是修剪低阶位: …

c++ low-level segmentation-fault

0
推荐指数
1
解决办法
299
查看次数

为什么Python将0转换为None对象?

我不太明白为什么Python会自动将函数返回给我的任何0转换为None对象.我用几乎所有的常用语言进行编程,但我以前从未遇到过这种情况.我希望如果我在结果中设置0,我会从函数中得到0.

任何人都可以解释为什么Python这样做?

编辑:

为了提供更多信息,我们有一个C++类的包装器,返回值类型是一个void指针.因此,如果它返回一个值为0的整数,它会给我一个None类型.这对任何人都有意义吗?

我只是Python的新手,并试图找出我可能期望的无类型而不是返回值.

python nonetype

0
推荐指数
1
解决办法
2323
查看次数

如果初始化,指针也会生成崩溃

我正在测试这段代码,结果是程序在到达<< op第一个时崩溃cout(因为它打印出op =然后停止).

char *lo = 0, *op = 0, *ro = 0;
cout << "op = " << op << endl;
cout << "*op = " << *op << endl;
Run Code Online (Sandbox Code Playgroud)

现在我的问题是:为什么会这样?

我知道,指针给我带来了很多问题..

c++ pointers

0
推荐指数
1
解决办法
145
查看次数

在switch语句中初始化时未定义的变量?

问题本身就是一个明显的答案.无论如何,这是我的代码片段......

    switch(cSet)...

    case 8:{ //Special Characters
        finalSet = special;
        char* charSet = new char[special.size() + 1];
        charSet[special.size()] = 0; //Append null terminator
        memcpy(charSet, special.c_str(), special.size());
        break;
    }

    case 9:{ //Alphnumeric and Special character
        finalSet = all;
        char* charSet = new char[all.size() + 1];
        charSet[all.size()] = 0; //Append null terminator
        memcpy(charSet, all.c_str(), all.size());
        break;
    }
    ...
Run Code Online (Sandbox Code Playgroud)

请注意,这finalSet是类型std::string.我需要将其保存为字符数组.在这个语句之后,我charSet在switch语句之外调用:

    for(int i = 0; charSet; i++)
         printf("%s", charSet[i]);
Run Code Online (Sandbox Code Playgroud)

现在,很明显switch语句是有条件的,因此可能并不总是声明变量.因此,Visual Studio 2012会抛出错误" charSet未定义".不过,我charSet总是会定义我的switch语句的结构,或者程序将在这种default情况下退出.

为了解决这个问题,我试图 …

c++ switch-statement

0
推荐指数
1
解决办法
1007
查看次数