C:关于头文件中函数原型的问题

时间:2017-03-06 03:23:04

标签: c

  1. 通常我们在头文件中声明一个函数原型,如:

    void function();

    这个函数可以接受任何参数吗?

  2. 如果函数将整数作为参数,我们写: void function(int);

    但有时候我会看到人们写:void function(int*);

    *在这做什么?

  3. 如果函数可以是几个类型的单个参数,如整数或 加倍,我们该怎么办?

2 个答案:

答案 0 :(得分:0)

  1.   

    通常我们在头文件中声明一个函数原型,如:

    void function();
    
         

    这个函数可以接受任何参数吗?

    未指明此函数将采用什么参数。

  2.   

    如果函数将整数作为参数,我们写:

         

    void function(int);

         

    但有时候我会看到人们写:void function(int *);

         

    *在这做什么?

    这是pointerint

  3.   

    如果函数可以采用几种类型的参数,比如integer和double,我们应该怎么做?

    intdouble是不兼容的类型。你不能采取任何一个或另一个的功能。您不能使用两种不同的类型定义两个不同的函数,但它们也可以共享相同的名称。

答案 1 :(得分:0)

  1. 问题本身措辞错误。这根本不是原型。这是非原型函数声明。

    它没有说明函数参数,这正是它与原型的不同之处。以这种方式声明的函数可以使用任何参数集来调用。

    但是,如果调用中使用的参数(在通常的算术转换之后)与使用实际定义的参数(数量和类型)不匹配,则行为未定义。如果实际函数被定义为variadic(参数列表中有...),则行为未定义。

  2. 这些是原型。第一个说该函数有一个int参数。第二个说它有一个int *参数(指向int的指针)。如果你知道什么是指针,那就没什么特别了。

  3. 目前尚不清楚被问到的是什么。 “我们应该做什么?”我不知道......飞到夏威夷,花五天时间在雨中裸体跳舞。

    此函数声明为采用不同类型的多个参数

    void foo(int, double, char, short *);
    

    没有什么特别之处。如果您有其他意思 - 澄清问题。