【发布时间】:2014-12-12 23:21:28
【问题描述】:
我对编程语言相当陌生,想知道是否可以将没有特定类型的参数传递给函数。例如,我有以下代码,它定义了一个函数add,它将占用一块内存,检查它是否通过另一个函数填充,然后将一个元素添加到与该内存块相关的列表中。
此元素可以是 int、float 或 char。所以我想写:
add(arrs1,20); //or also
add(arrs2,'b'); //or also
add(arrs3, 4.5);
arrs# 由struct arrs arrs# 定义,它们指的是浮点数、整数或字符数组,但不混合。我怎么能做到这一点?
int add(arrs list, NEW_ELEMENT){//adds NEW_ELEMENT at the end of an arrs
int check_if_resize;
check_if_resize=resize(list, list->size + 1);
list->ptr[list->used++] = NEW_ELEMENT;
return check_if_resize;
}
感谢您的帮助。
【问题讨论】:
-
不,但有些人会使用宏来执行此操作,或者他们会使用
void*(和内存大小)并使用memcpy将数据写入必要的位置。 -
@Cornstalks 你能给我一个使用宏的例子吗?你的意思是像定义 add 不是一个 int 函数,而是一个宏,例如
#define add(list,NEW_ELEMENT) (here what?). -
qsort()不就是这样吗?不仅是数据类型,还有它的compare()函数参数。 -
如果您真的需要这样做,请使用 glib 及其变体对象
-
C 是一种强类型 语言,但有一些方法可以通过类型转换来解决这个问题。关于这个主题有几个以前的 SO 问题,例如。 stackoverflow.com/questions/2351190/…
标签: c arguments argument-passing