我是C编程的初学者所以我有一个基本的问题,在我的代码中的很多地方,我使用了一些具有双暗的结构。指针数组作为变量,如下例所示:
typedef struct example {
char** elements;
int number_elements;
int x;
} example;
所以我通常是这样做的,我为结构分配内存,为可变元素分配数字x,
example* e = malloc(sizeof(example);
if (e == NULL) exit(EXIT_FAILURE);
e->elements = malloc(sizeof(char*) * x);
if (e->elements == NULL) //throw error
for (int i=0; i<x; i++) {
e->elements[i] = malloc(sizeof(char)*1024);
if (e->elements[i] == NULL) //throw error
}
所以我动态地将元素添加到第二维。因此,如果2.nd维度已满,我会重新分配并更新x。
所以我的问题是,这个数字x有一个很好的或常见的方式可以隐藏,因为像这样我在结构中存储一个变量,用于其中的元素数量,另一个变量用于分配的实际元素数量,这只是丑陋的。
答案 0 :(得分:3)
所以我的问题是,这个数字x有一个很好的或常见的方式可以隐藏,因为像这样我在结构中存储一个变量,用于其中的元素数量,另一个变量用于分配的实际元素数量,这只是丑陋的。
这并不难看。 x
的值必须存储在某个地方。最好将struct
本身作为成员使用,因为struct
的两个实例可以具有不同的x
值。从这个角度来看,让x
作为struct
的成员是最优雅的解决方案,与您的想法完全相反。