[英]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.