C 当类型已知时,如何从空指针返回具有类型的指针

C 当类型已知时,如何从空指针返回具有类型的指针,c,types,void-pointers,C,Types,Void Pointers,我目前正在制作一个小型库,可以访问random.org并获取随机字符串或整数。不过,就设计而言,我现在遇到了一个小问题,我无法决定我的两种方法中哪一种是最好的,所以我将写下我对这两种方法的想法,并提出我认为与这两种方法都相关的问题 我目前有这样一个结构: typedef struct { char **array; size_t row; size_t col; size_t size; } MemoryStruct; 这就是我“问题”的根源,因为我现在已经在我的库中添加了整数处理 可以看出

我目前正在制作一个小型库,可以访问random.org并获取随机字符串或整数。不过,就设计而言,我现在遇到了一个小问题,我无法决定我的两种方法中哪一种是最好的,所以我将写下我对这两种方法的想法,并提出我认为与这两种方法都相关的问题

我目前有这样一个结构:

typedef struct {
char **array;
size_t row;
size_t col;
size_t size; 
} MemoryStruct;
这就是我“问题”的根源,因为我现在已经在我的库中添加了整数处理

可以看出,指针当前是一个char指针,我希望能够处理blot整数和char,我应该添加另一个指针-一个整数指针-还是应该将其改为void指针并生成一个返回正确类型指针的函数

添加整数指针是最简单的,但我不确定在将来某个时候可能会使用我的库的人会有多明显,这就是为什么他的程序会出错,因为他在结构中使用了错误的指针

但是,添加一个空指针意味着我必须执行一个基于上下文的函数,该函数将返回一个正确类型的指针(如果这是可能的话-我真的不知道它是否是),这就引出了一个问题:

可以返回不同类型指针的函数有哪种返回类型?(…很明显,这是一个空指针!)但是我仍然没有包含想要的类型,以便于使用我的库的程序员使用-下面是我想做的将其放入伪代码中的操作

pointer-with-type-info *fun(MemoryStruct *memory, RandomSession *session)
switch case on session->type
return pointer of appropriate type
应该在这里添加,从session->type可以推断指针应该是哪种类型


提前感谢您阅读本文。

按照我理解您问题的方式,您知道指针数据类型。我将使用一个
void*
而不是两个指针,因为您以后可以添加更多的数据类型,而无需创建更多的字段


要检索正确的值,可以创建两个函数:
int-getAsString(MemoryStruct,char**value)
int-getAsInteger(MemoryStruct,int&value)
。如果成功,这些函数将返回非零值(
true
)。这样,您不仅可以检索到正确的值,而且还可以知道该值是否可以作为此数据类型检索。

按照我理解您问题的方式,您知道指针数据类型。我将使用一个
void*
而不是两个指针,因为您以后可以添加更多的数据类型,而无需创建更多的字段


要检索正确的值,可以创建两个函数:
int-getAsString(MemoryStruct,char**value)
int-getAsInteger(MemoryStruct,int&value)
。如果成功,这些函数将返回非零值(
true
)。这样,你不仅能够检索正确的值,而且你也有办法知道这个值是否可以作为这个数据类型来检索。

是否可以使用C++和模板,或者你只限于使用C?我宁愿把它保存在C中,因为我比较舒服。而不是进入C++和模板。那么你就被困在使用空* *是否可以使用C++和模板,或者你只限于使用C?我宁愿保持它在C,因为我更舒服,而不是进入C++和模板。然后你就坚持使用空隙*。