我想知道是否可以将数组的长度设置为同一 struct 中的另一个给定值? 我希望这个长度是恒定的,不需要创建动态数组或类似的东西 类似于下面的代码
struct Screen {
int x ;
int y ;
int rows ;
int columns ;
char screen[rows][columns] ;
}
我对基于C的语言非常陌生,这当然是一个非常基础的知识,但嘿,这就是我学习的原因!(也原谅我糟糕的英语) 欢迎任何回复!
我想知道是否可以将数组的长度设置为同一 struct 中的另一个给定值? 我希望这个长度是恒定的,不需要创建动态数组或类似的东西 类似于下面的代码
struct Screen {
int x ;
int y ;
int rows ;
int columns ;
char screen[rows][columns] ;
}
我对基于C的语言非常陌生,这当然是一个非常基础的知识,但嘿,这就是我学习的原因!(也原谅我糟糕的英语) 欢迎任何回复!
struct 中不允许使用可变长度数组,如果有多个维度发生变化,则不能使用灵活的数组成员.
要模拟2D数组,最好的方法是使用双指针:
struct Screen {
int x ;
int y ;
int rows ;
int columns ;
char **screen;
};
并根据需要为其分配空间:
struct Screen screen;
screen.rows = 4;
screen.columns = 5;
screen.screen = malloc(screen.rows * sizeof *screen.screen);
int i;
for (i=0; i<screen.rows; i++) {
screen.screen[i] = malloc(screen.columns * sizeof **screen.screen);
}