我已经声明了已知大小的数组,
typedef struct{
......
char * buffer[height+1]; //height is a constant int
......} args;
int main{
args * info;
info = malloc (sizeof(args));
char* output_buffer[width][height+1]; //width is also a constant int >= 4
output_buffer[2] = malloc (sizeof(char)*char_per_line*(height+1)); // error same as below
info->buffer = output_buffer[2]; // I know it's wrong. incompatible types in assignment
....}
数字是任意的,仅用于说明。
我正在做的是分配 to 的地址output_buffer[width]
,info->buffer
然后info
作为参数传递给一个线程,该线程生成一个大小为数组的数据height+1
;每个插槽中都有一个长度为 cstring 的字符串char_per_line
。这些 cstrings 存储在output_buffer[2]
.
我在这里感到困惑,这不是output_buffer[2]
类型的指针char*[height+1]
吗?那为什么我不能malloc
给它分配内存地址呢?
另外,我知道我不能将数组分配给数组,但我怎样才能让代码以所需的方式工作?如果解决方案是使用char**
as char*[height+1]
,那么我该如何访问info->buffer[height]
?
提前致谢!