通常我们在头文件中声明一个函数原型,如:
void function();
这个函数可以接受任何参数吗?
如果函数将整数作为参数,我们写:
void function(int);
但有时候我会看到人们写:void function(int*);
*
在这做什么?
如果函数可以是几个类型的单个参数,如整数或 加倍,我们该怎么办?
答案 0 :(得分:0)
通常我们在头文件中声明一个函数原型,如:
void function();
这个函数可以接受任何参数吗?
未指明此函数将采用什么参数。
如果函数将整数作为参数,我们写:
void function(int);
但有时候我会看到人们写:void function(int *);
*
在这做什么?
这是pointer到int
。
如果函数可以采用几种类型的参数,比如integer和double,我们应该怎么做?
int
和double
是不兼容的类型。你不能采取任何一个或另一个的功能。您不能使用两种不同的类型定义两个不同的函数,但它们也可以共享相同的名称。
答案 1 :(得分:0)
问题本身措辞错误。这根本不是原型。这是非原型函数声明。
它没有说明函数参数,这正是它与原型的不同之处。以这种方式声明的函数可以使用任何参数集来调用。
但是,如果调用中使用的参数(在通常的算术转换之后)与使用实际定义的参数(数量和类型)不匹配,则行为未定义。如果实际函数被定义为variadic(参数列表中有...
),则行为未定义。
这些是原型。第一个说该函数有一个int
参数。第二个说它有一个int *
参数(指向int
的指针)。如果你知道什么是指针,那就没什么特别了。
目前尚不清楚被问到的是什么。 “我们应该做什么?”我不知道......飞到夏威夷,花五天时间在雨中裸体跳舞。
此函数声明为采用不同类型的多个参数
void foo(int, double, char, short *);
没有什么特别之处。如果您有其他意思 - 澄清问题。