如何用null声明和初始化多维数组
How to declare and initialise multidimensional array with NULLs
#include <stdio.h>
int main() {
const char *number_groups[2][4][2] = {
{
{"5", "6"},
{"5.0", "6.0"},
{"5/1", "6/1"},
{"15/3", "-12/-2"},
},
{ // number_groups[1]
{"-98765432109876543210", "98765432109876543210"},
{"-98765432109876543210.0", "98765432109876543210"},
{"-98765432109876543210/1", "98765432109876543210/1"},
NULL // number_groups[1][3]
}
};
printf("(number_groups[1][3] == NULL) == %dn", number_groups[1][3] == NULL);
return 0;
}
测试代码
我想创建一个多维数组,其中的元素是c-string的对。
如果我只是制作一个包含10个c-string的数组,我可以用2个c-string填充它,其他8个指针将是NULL
,但如果我想制作一个更复杂的数组,就像我在这篇文章的顶部发布的那样,我不知道如何做到这一点。下面是初始化一个包含10个c-string字符串的数组和一个包含10个数组的数组的区别的示例:
#include <stdio.h>
int main() {
const char* array[10] = { "/usr/bin/ls", "-l" };
for (unsigned int i = 0; i < 10; ++i){
printf("(array[%d] == NULL) == %dn", i, array[i] == NULL);
}
const char* array2[10][2] = {
{"aa", "bb"},
{"bb", "cc"}
};
for (unsigned int i = 0; i < 10; ++i){
printf("(array2[%d] == NULL) == %dn", i, array2[i] == NULL);
}
return 0;
}
(测试代码)
c风格的数组有点令人困惑和过时。它们只是将坐标轴映射到数据块上的一种简写。
在这个例子中,你可以看到(至少)有4种方法可以访问c风格数组中的同一个元素:#include <iostream>
using namespace std;
#define X_EXTENT 4
const char* array2[10][X_EXTENT];
int main()
{
int y = 5, x = 1;
array2[y][x] = "hello";
cout << array2[y][x] << endl;
cout << *(array2[y] + x) << endl;
cout << *(*(array2 + y ) + x) << endl;
cout << *(reinterpret_cast<const char**>(array2) + y * X_EXTENT + x) << endl;
return 0;
}
相关文章:
- C++使用整数的压缩数组初始化对象
- C++17中函数模板中的静态数组初始化(MSVC 2019)
- 从另一个静态常量数组初始化静态常量数组(只需少量计算)
- 在 Python 和 c++ 2d 数组初始化之间.这是怎麽?为什么呢?
- 字节数组初始化会导致 DirectX 崩溃
- 使用 new 和 值进行数组初始化,但没有显式数量的元素
- 运行时C++数组初始化问题
- 使用带有参数包的数组的成员数组初始化类
- 仅通过C++中数组初始化的不同方法,即可在同一输入上获得两个不同的答案
- C++ 2 个指针数组初始化 C2440
- C++结构字符数组初始化
- C++中的多维数组初始化
- constexpr数组初始化
- C++引物动态数组初始化程序的数目超过大小
- 使用std::index_sequence对std::数组初始化进行包扩展
- 当 std 数组初始化太小时,C++会引发错误吗?
- 如何确定结构数组初始化的大小?
- Qt并发错误:数组初始化需要大括号括起来的初始值设定项列表
- 此代码中的数组初始化样式是什么?这是标准的吗?
- C++ 使用数组初始化时的 STL 向量内存管理