我正在尝试 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/