Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在C+;中声明不同大小的数组+;?_C++_Arrays_Declaration - Fatal编程技术网

C++ 如何在C+;中声明不同大小的数组+;?

C++ 如何在C+;中声明不同大小的数组+;?,c++,arrays,declaration,C++,Arrays,Declaration,我基本上想做这样的事情: Foo one; Foo two; Foo three; Foo **arr[] = { {&one, &two, NULL}, {&one, NULL}, {&one, &two, &three, NULL}, NULL }; 也就是说,我想声明一个以null结尾的数组,其中包含指向特定类实例的指针的以null结尾的数组 这是针对Arduino环境的,因此,new、malloc()和S

我基本上想做这样的事情:

Foo one;
Foo two;
Foo three;

Foo **arr[] = {
    {&one, &two, NULL},
    {&one, NULL},
    {&one, &two, &three, NULL},
    NULL
};
也就是说,我想声明一个以null结尾的数组,其中包含指向特定类实例的指针的以null结尾的数组


这是针对Arduino环境的,因此,
new
malloc()
和STL不可用。

您走的路是正确的,但在核心语言级别,您必须为每个子数组创建命名数组对象

Foo one;
Foo two;
Foo three;

Foo *row0[] = { &one, &two, NULL };
Foo *row1[] = { &one, NULL };
Foo *row2[] = { &one, &two, &three, NULL };

Foo **arr[] = { row0, row1, row2, NULL };
(根据需要添加
const
限定符)

在C语言中,您将拥有复合文字特性,这将允许您完全按照您的版本执行操作

Foo **arr[] = 
{ 
  (Foo *[]) { &one, &two, NULL },
  (Foo *[]) { &one, NULL },
  (Foo *[]) { &one, &two, &three, NULL },
  NULL 
};

但是它是C++特有的,不是C++中的。您可能想检查编译器是否支持C++作为非标准扩展。

< P>您是在正确的路径上,但是在核心语言级别,您必须为每个子数组< /P>创建命名数组对象。
Foo one;
Foo two;
Foo three;

Foo *row0[] = { &one, &two, NULL };
Foo *row1[] = { &one, NULL };
Foo *row2[] = { &one, &two, &three, NULL };

Foo **arr[] = { row0, row1, row2, NULL };
(根据需要添加
const
限定符)

在C语言中,您将拥有复合文字特性,这将允许您完全按照您的版本执行操作

Foo **arr[] = 
{ 
  (Foo *[]) { &one, &two, NULL },
  (Foo *[]) { &one, NULL },
  (Foo *[]) { &one, &two, &three, NULL },
  NULL 
};

但是它是C++特有的,不是C++中的。您可能想检查编译器是否支持C++作为非标准扩展。

我知道上面的声明可能是错误的,因为我在这里用英文写的,这就是我要的,正确的声明。我知道上面的声明可能是错误的,我用英文写的,这就是我想要的,正确的声明。哦,该死。这就是我现在得到的,但我试图消除冗余。真的没有更好的办法了,呃?哦,该死。这就是我现在得到的,但我试图消除冗余。真的没有更好的办法了,嗯?