我如何malloc一个n元素的数组,我知道每个元素都是两个字符的数组?
我尝试过类似的东西,但编译器说它无效:
char *candidates_top[2] = malloc(sizeof(char[2]) * n);
答案 0 :(得分:4)
像这样:
char (*candidates_top)[2] = malloc(sizeof(*candidates_top)*n);
您需要从里到外读取新变量candidates_top
的类型:candidates_top
是一个指向(*...)
的指针,指向两个元素[2]
的数组属于char
类型。这就像你用
n
整数数组
int *intArray = malloc(sizeof(*intArray)*n);
唯一的区别是,在candidates_top
的情况下,数组元素本身就是数组。
索引正如您所期望的那样:
candidates_top[7][0] = '4';
candidates_top[7][1] = '2';
答案 1 :(得分:1)
声明
char *candidates_top[2];
将candidates_top
声明为两个指向char
的指针的数组。您似乎希望candidates_top
成为指向两个char
数组的指针
char (*candidates_top)[2];
答案 2 :(得分:0)
如果这让你的耳朵出血:
char (*candidates_top)[2] = malloc(sizeof(*candidates_top)*n);
您可以使用typedef
:
typedef char twos[2];
//....
twos *candidates_top=malloc(sizeof(twos)*n);