【发布时间】:2014-12-14 22:25:09
【问题描述】:
我想创建具有可发现大小的字符串列表,但不确定我是否有正确的方法/语法。这是我的尝试:
typedef struct {
unsigned int size;
char** list;
} STRLIST;
static STRLIST listMediaType = {
.size = 7,
.list = {
"Book",
"Map",
"Booklet",
"Pamphlet",
"Magazine",
"Report",
"Journal"
},
};
这是正确的方法吗?请注意,我不想将大小硬编码到结构中,因为我想使用相同的类型来定义许多不同的列表。例如,想象以下函数:
void printList( STRLIST* pList ){
for( int x = 0; x < pList->size; x++ ) printf( "%s\n", pList->list );
}
【问题讨论】:
-
你有没有先尝试过?
-
如果你只做
char * list[] = {"Book", "Map"...},你可以通过sizeof list / sizeof list[0]找到它的大小,你不需要像这样将它包裹在struct中。当你在编译时不知道你有多少元素时,这种事情只会成为一个问题,在这里你就知道了。 -
不,我想对不同大小的不同列表使用相同的结构,因为函数将“列表”作为参数并且可以提供不同的列表。
-
顺便说一句:为什么不能只使用一个简单的
char*数组和一个标记-NULL? -
@Deduplicator 我想我可以。我没有想到。这就是我问这个问题的原因。
标签: c string struct static initialization