C 中存在哪些类型的原型?
What types of prototypes exist in C?
好吧,我在某个地方(我不记得在哪里)读到过类似于 C 中的原型类型。一个用于发送参数,另一个用于数据 return。这些名称和用途是什么?
只有一种函数原型。使用函数原型,您可以告诉编译器函数的 return 值的类型以及参数的数量和类型。
历史上函数可以有默认类型的参数和默认类型的 return 值。默认类型为 int
"...一个用来发送参数,另一个用来发送数据return...."
使用通用术语,您可能指的是函数参数类型,特别是因为它们与 input 参数和 output 有关参数.
实际上,C
本身并没有区分或定义input和output函数参数。根据定义 C
只有 按值传递 函数参数。但是,传递的 type 值可以是两个不同类别之一:由对象本身表示的 value,或者 value对象的地址。如果传递的是对象本身的值,则被调用函数无法修改该值。但是,如果传递对象的 地址的值 ,则该函数能够修改驻留在该地址的对象的值,并且在函数 return 上,对象的更新值可通过 return 函数参数访问。
因此,为了简化此说明的措辞,在本回答的上下文中使用了以下术语:
- 输入 - 传递对象值的函数参数。
- output - 传递对象地址值并在 return.
时提供对更新对象值的访问的函数参数
为了说明,关于 input 和 output 以下原型同时具有这两个。前两个参数是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
好吧,我在某个地方(我不记得在哪里)读到过类似于 C 中的原型类型。一个用于发送参数,另一个用于数据 return。这些名称和用途是什么?
只有一种函数原型。使用函数原型,您可以告诉编译器函数的 return 值的类型以及参数的数量和类型。
历史上函数可以有默认类型的参数和默认类型的 return 值。默认类型为 int
"...一个用来发送参数,另一个用来发送数据return...."
使用通用术语,您可能指的是函数参数类型,特别是因为它们与 input 参数和 output 有关参数.
实际上,C
本身并没有区分或定义input和output函数参数。根据定义 C
只有 按值传递 函数参数。但是,传递的 type 值可以是两个不同类别之一:由对象本身表示的 value,或者 value对象的地址。如果传递的是对象本身的值,则被调用函数无法修改该值。但是,如果传递对象的 地址的值 ,则该函数能够修改驻留在该地址的对象的值,并且在函数 return 上,对象的更新值可通过 return 函数参数访问。
因此,为了简化此说明的措辞,在本回答的上下文中使用了以下术语:
- 输入 - 传递对象值的函数参数。
- output - 传递对象地址值并在 return. 时提供对更新对象值的访问的函数参数
为了说明,关于 input 和 output 以下原型同时具有这两个。前两个参数是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