繁体   English   中英

malloc一个char [] []

[英]malloc a char[][]

我正在尝试分配一个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;

证明

只要我在您的代码段中添加此代码,这对我来说就很好了。 请注意,“ A”被声明为“ char **”类型。 如果您说“ char A [] []”,则该命令将无效。

#include <stdlib.h>

int main() {
  const int N = 10;
  int i, j, left, right;
  char **A;
  /* your code */
  return 0;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM