C 中存在哪些类型的原型?

What types of prototypes exist in C?

好吧,我在某个地方(我不记得在哪里)读到过类似于 C 中的原型类型。一个用于发送参数,另一个用于数据 return。这些名称和用途是什么?

只有一种函数原型。使用函数原型,您可以告诉编译器函数的 return 值的类型以及参数的数量和类型。

历史上函数可以有默认类型的参数和默认类型的 return 值。默认类型为 int

"...一个用来发送参数,另一个用来发送数据return...."

使用通用术语,您可能指的是函数参数类型,特别是因为它们与 input 参数和 output 有关参数.

实际上,C本身并没有区分或定义inputoutput函数参数。根据定义 C 只有 按值传递 函数参数。但是,传递的 type 值可以是两个不同类别之一:由对象本身表示的 value,或者 value对象的地址。如果传递的是对象本身的值,则被调用函数无法修改该值。但是,如果传递对象的 地址的值 ,则该函数能够修改驻留在该地址的对象的值,并且在函数 return 上,对象的更新值可通过 return 函数参数访问。

因此,为了简化此说明的措辞,在本回答的上下文中使用了以下术语:

  • 输入 - 传递对象值的函数参数。
  • output - 传递对象地址值并在 return.
  • 时提供对更新对象值的访问的函数参数

为了说明,关于 inputoutput 以下原型同时具有这两个。前两个参数是input,第三个是output.:

void func1(int val1, int val2, int *sum)
{
    *sum = val1 + val2;
}

called like this: 

int a = 100;
int b = 300;
int sum = 0;

int return = func1(a, b, &sum);//value of sum == 400 upon return