【发布时间】:2012-06-09 04:10:00
【问题描述】:
我已经声明了已知大小的数组,
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
....}
数字是任意的,仅用于说明。
我所做的是将output_buffer[width]的地址分配给info->buffer,然后将info作为参数传递给一个线程,该线程生成一个大小为height+1的数据数组;每个插槽中都有一个长度为 char_per_line 的 cstring。这些 cstrings 存储在output_buffer[2]。
我在这里感到困惑,这不是output_buffer[2] 类型为char*[height+1] 的指针吗?那为什么我不能将malloc的内存地址分配给它呢?
另外,我知道我不能将数组分配给数组,但我怎样才能让代码以所需的方式工作?如果解决方案是使用char** 作为char*[height+1],那么我该如何访问info->buffer[height],比如说?
提前致谢!
【问题讨论】:
标签: c multidimensional-array variable-assignment