【发布时间】:2014-09-01 22:33:54
【问题描述】:
我需要在 C 中存储一个名称列表。我决定一个好方法是使用双指针(或指针对指针)。
所以我会有一个名字数组。每个数组值都是指向另一个数组的指针:名称,存储为字符数组。
名称可能看起来像
unsigned char *name = "Joseph";
等等
然后我会有一个名称列表(双指针),我可以(动态地)分配每个名称(单指针)。
(type) **listOfNames;
我的问题是:双指针应该是什么类型?由于它是指向指针的指针,我在想它必须足够大以容纳任意内存地址:unsigned long,也许?还是有另一种专门用于双指针的类型?
或者——有没有更好的存储可变长度数组或可变长度字符串的方法?
【问题讨论】:
-
只要
char,或者unsigned char,如果你真的需要的话。指向 T 的指针的大小与 T 的大小不同。 -
哦,那么
char **list;? -
是的。否则你将很难让它指向字符串文字。
-
@user3121023 您不必这样做,例如
char const *listOfNames[20]; -
问题是名称不是
const。我正在从文件中读取它们。因此,可变长度字符串的可变长度数组。我不知道编译时会有多长时间。