【问题标题】:Is accessing a double pointer array within a pointer array possible?是否可以访问指针数组中的双指针数组?
【发布时间】:2020-04-16 05:59:07
【问题描述】:

我正在尝试在下面的代码中删除发生错误的语句。

每当执行此语句时,我都会遇到分段错误。

这个说法有问题吗?

假设,

struct StructX
{
  int ** dblPtrArray;
}

int main()
{
  StructX * obj;
  int i = 0;
  int j = 0;

  obj[i].dblPtrArray[i][j] = 0;  // error here

return 0;
}

【问题讨论】:

  • 语言?我假设 C?
  • @bolov 这是 C++
  • 旁注:这可能是有效的 C++ 语法,但它不是 C++。它是 C。如果您想使用 C++,请正确使用 C++ 及其抽象和标准库,即在这种情况下为 std::vector
  • @bolov 同意,​​但我认为 StructX * obj; 不是有效的 C?

标签: c++ pointers pointer-to-pointer


【解决方案1】:

这与双指针无关。你基本上有以下几种情况:

int* p;
*p = 24;

您访问(取消引用)一个未初始化的指针,它是未定义的行为。

在您的特定情况下,obj 未初始化,obj[i] 未定义行为。


Aaa 我们又来了:在 C++ 中不要使用表示所有权的原始指针。使用智能指针或在您的案例容器中。在 C++ 中,不要使用显式调用 newdelete。如果您真正需要拥有所有权的指针,请再次使用智能指针。

C++ 中的一个基本概念是RAII

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-03
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多