c - malloc 一个 char[][]

标签 c arrays dynamic malloc

我正在尝试 malloc 一个 char 以在每个单元格中包含一个字母的行和列。类似于 int x[i][j] 的东西,我有 i*rows 和 j*columns。基本上我想做这个:

     |     
     1
    222
   33333
  4444444

我试过这段代码,但它给了我一个错误:赋值从指针生成一个整数而不进行强制转换

A=(char**) malloc (5*sizeof(char*));
for(i=0;i<N+2;i++)`{
    A[i]=(char*) malloc(7*sizeof(char));
}
for(i=0;i<3;i++){
    for(j=0;j<7;j++){
       left=3;
       right=3;
       if((j>=left)&&(j<=right)){
          A[i][j]=i;
       }
    }
    left--;
    right++;
}

最佳答案

我会采用不同的方法:

#define STEPS      5
#define ARRAY_SIZE STEPS*STEPS

你的情况下数组的大小可以很容易地通过上面的公式计算出来。
现在,您只需要分配固定大小的字节并填充它。就是这样。更重要的是,下面的版本将在简单性和性能方面胜过您的版本。

int i, j;
char *array;

array = malloc(ARRAY_SIZE);
for (i = 0; i < STEPS; i++)
    for (j = 0; j < (i * 2 + 1); j++)
        *(array + i * STEPS + j) = i + 1;

Proof .

关于c - malloc 一个 char[][],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8341216/

相关文章:

c - 在 C 中,被调用函数可以使调用函数返回吗?

c - fatal error LNK1146 : no argument specified with option '/OUT:' in VC++ Kernel

java - 为什么我没有得到任何输出?并且有一个InputMismatchException

ruby-on-rails - Rails 3.1 attr_accessible 验证接收角色数组

c - 缓冲区不从线程执行的函数 - 适用于 Linux 而不适用于 OS X

c - C 中的未知函数签名

java - 将用户输入字符串中的数据提取到数组中

javascript - 创建长度为 n 的空数组

list - 在 Liferay 中创建进度条

r - 基于用户输入 Shiny 的 ggplot 突出显示区域