malloc a char [] []

时间:2011-12-01 12:14:36

标签: c arrays dynamic malloc

我正在尝试使用malloc来获取每个单元格中包含一个字母的行和列。类似于int x [i] [j]的东西我有i *行和j *列。基本上我想做到这一点:

     |     
     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++;
}

2 个答案:

答案 0 :(得分:3)

我会采用不同的方法:

#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

答案 1 :(得分: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;
}