用int返回int *

时间:2018-12-14 04:19:41

标签: c++ pointers return-type

class A {
  private:
    int* count = NULL;
  public:
    A() {
      count = NULL;
    }
    int getCount() {
      return *count;
    }
};

使用我的int类型变量返回int*类型存在一个简单的问题。当我编写A a();并运行a.getCount();时,出现了段错误。但是我不明白为什么。我误解了指针的概念吗??

2 个答案:

答案 0 :(得分:1)

在取消引用之前,必须先指向某个东西。

答案 1 :(得分:1)

您肯定在return *count;遇到分段错误。 为什么?。这是因为您正试图取消引用其值仍为*count;(不指向任何内容)的指针变量(NULL);

您应该重写

int getCount() 
{
   return *count;
}

int getCount() 
{
   if (count != NULL)
      return *count;
   return 0; // 0 or -1 other any other value depends on your code logic.
}

您还可以通过另一种方式将构造函数中的count的值初始化为某个value

A() 
{
   *count = 0; // 0 or -1 other any other value depends on your code logic.
}