相关疑难解决方法(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中使用动态多维数组?

有人知道如何使用C动态分配多维数组吗?那可能吗?

c arrays dynamic

59
推荐指数
4
解决办法
14万
查看次数

堆分配一个2D数组(不是指针数组)

我正在编写C代码,我想堆分配512*256字节.为了方便起见,我希望能够使用语法数组[a] [b]访问元素; 没有算术来找到正确的索引.

我在网上看到的每个教程都告诉我要创建一个指针数组,指向我在数组中想要的行数组.这意味着每个子数组都需要单独进行malloc和free.我感兴趣的,只需要调用一次malloc和一个呼叫免费的解决方案.(因此,所有的元素是连续的),我认为这是可能的,因为我不会构建一个交错的数组.

如果有人可以分享声明这样一个数组的语法,我将不胜感激.

c malloc multidimensional-array

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

如何编写可以同时采用动态/静态分配的2D阵列的交流功能?

我有一个假设将2D数组作为参数的函数,我的代码看起来像这样 -

#include <stdio.h>
#include <stdlib.h>

void func(double**, int);

int main()
{
    double m[3][3] = {{1, 1, 1}, {2, 2, 2}, {3, 3, 3}};
    func(m, 3);
}

void func(double **m, int dim)
{
    int i, j ;
    for(i = 0 ; i < dim ; i++)
    {
        for(j = 0 ; j < dim ; j++)
            printf("%0.2f ", m[i][j]);
        printf("\n");
    }
}
Run Code Online (Sandbox Code Playgroud)

然后编译器说 -

test.c: In function ‘main’:
test.c:9:2: warning: passing argument 1 of ‘func’ from incompatible pointer type [enabled …
Run Code Online (Sandbox Code Playgroud)

c arrays function gcc4.7

5
推荐指数
1
解决办法
116
查看次数