相关疑难解决方法(0)

创建指向二维数组的指针

我需要一个指向静态二维数组的指针.这是怎么做到的?

static uint8_t l_matrix[10][20];

void test(){
   uint8_t **matrix_ptr = l_matrix; //wrong idea 
}
Run Code Online (Sandbox Code Playgroud)

我得到各种错误,如:

  • 警告:从不兼容的指针类型分配
  • 下标值既不是数组也不是指针
  • 错误:无效使用灵活的数组成员

c arrays pointers

110
推荐指数
5
解决办法
21万
查看次数

在C++中将1D数组作为2D数组访问

这困扰了我一段时间.很多时候,我发现自己制作了一个大缓冲区来保存"最大"的数据量.这有助于避免每次下一个数据集的大小发生变化时动态分配和释放缓冲区.

例如,假设我的数组对于实际有用的大小来说太大了,但我知道有用数据的长度.

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 = 4ylength = 4给予amountOfData = 16.

我想做某种类型的转换,允许我使用2D数组索引来转换1D数组.我知道我的初始1D长度有多长,它告诉我我的2D xlength和它有多长ylength,所以这应该很容易做到而不使用newmalloc只要最初的100个字节足够长以容纳任何有用的数据集给我.

我意识到:

char** data2d = (char**) …
Run Code Online (Sandbox Code Playgroud)

c c++ arrays casting multidimensional-array

17
推荐指数
1
解决办法
1万
查看次数

标签 统计

arrays ×2

c ×2

c++ ×1

casting ×1

multidimensional-array ×1

pointers ×1