我需要一个指向静态二维数组的指针.这是怎么做到的?
static uint8_t l_matrix[10][20];
void test(){
uint8_t **matrix_ptr = l_matrix; //wrong idea
}
Run Code Online (Sandbox Code Playgroud)
我得到各种错误,如:
这困扰了我一段时间.很多时候,我发现自己制作了一个大缓冲区来保存"最大"的数据量.这有助于避免每次下一个数据集的大小发生变化时动态分配和释放缓冲区.
例如,假设我的数组对于实际有用的大小来说太大了,但我知道有用数据的长度.
int amountOfData = 9;
char data1D[100] = some data that is only 9 bytes long stored in a 100 byte array
Run Code Online (Sandbox Code Playgroud)
假设我有一个算法,我想在这个使用2D数组索引的数据集上运行.所以我希望能够按如下方式访问数据:
cout << "I am accessing this data as a 2D array: " << data1D[0][1] << endl;
Run Code Online (Sandbox Code Playgroud)
让我们说这个算法我知道2D数组的xlength和ylength将是:
int xlength = 3;
int ylength = 3;
Run Code Online (Sandbox Code Playgroud)
对于这个迭代,因为amountOfData = 9.但是,下一次迭代的长度可能不同.IE浏览器.他们可以xlength = 4和ylength = 4给予amountOfData = 16.
我想做某种类型的转换,允许我使用2D数组索引来转换1D数组.我知道我的初始1D长度有多长,它告诉我我的2D xlength和它有多长ylength,所以这应该很容易做到而不使用new或malloc只要最初的100个字节足够长以容纳任何有用的数据集给我.
我意识到:
char** data2d = (char**) …Run Code Online (Sandbox Code Playgroud)