我正在努力学习一些课堂上的例子,并且一直停留在以下几个方面:
数组网格应该具有长度宽度,每个条目代表单元格的一列。有一些占用单元格的列应该是长度高度为malloc‘’ed的字符数组。
使用给定的标头:
void grid(char **grid, int width, int height)
在另一个文件中,网格定义为:
char **grid;
正如我已经说过的,我一直在使用malloc,我现在有:
int x;
*grid = malloc(width * sizeof(char));
for(x = 0; x < width; x++){
grid[x] = malloc(height * sizeof(char));
}
谁能看看如何正确地完成“一些占用单元格的列应该是长度高度为malloc‘’ed的字符数组”的正确方法,因为我不明白这行是怎么回事:
gridx =malloc(高度*大小(Char));
等于一个字符数组。
谢谢
发布于 2011-03-21 11:58:48
发布于 2011-03-21 11:58:35
char** grid;
是指向指针的指针。
grid = malloc( width* sizeof( char* ) ) ; // Statement 1
for( int i=0; i<height; ++i )
{
grid[i] = malloc( height ) ; // Statement 2
}
理解char** -> char* -> char
。因此,首先需要预留地址的宽度。在报表1中实现了这一目标。现在,这些索引中的每一个都应该指向存储高度字符的内存位置,并由语句2实现。
图表表示听起来比描述更清晰。希望这能帮上忙!
发布于 2011-03-21 11:57:49
用这个:
grid = malloc(width * sizeof(char *));
您希望将width
指针的空间分配给char,然后正确地将各个指针分配给循环中的height
字符。
使用ty胡枝子使这一点更加可见:
typedef char * charpointer;
charpointer * grid = malloc(width * sizeof(charpointer));
https://stackoverflow.com/questions/5382858
复制相似问题