提问人:Coderey123 提问时间:1/24/2023 最后编辑:Jonathan LefflerCoderey123 更新时间:1/24/2023 访问量:75
我可以声明没有参数的函数,然后用参数定义它吗?
Can I declare function without parameters and later define it with parameters?
问:
我可以声明一个没有参数的函数,然后用参数定义它吗?
我试图定义一个内部没有参数的函数,然后用参数声明它?我可以用 C 语言做吗?
#include<stdio.h>
void change_order(); //Here Here
int main()
{
int num[3];
for(int i = 0; i<3; i++)
{
printf("Enter Number%i:", i+1);
scanf("%i", &num[i]);
}
change_order(num, 0, 1);
for(int i = 0; i<3; i++)
{
printf("%i\n", num[i]);
}
}
void change_order(int array[], int index1, int index2 )
{
if(array[index1]>array[index2])
{
int Temp = array[index1];
array[index1] = array[index2];
array[index2] = Temp;
}
}
还有一个问题:
我可以写吗?void change_order(int array[int n])
答:
本声明:
void change_order();
声明该函数接受未知数量的参数并返回 。函数的定义与此匹配。change_order
void
但是,还有一个额外的要求。由于调用方不知道参数的数量或类型,因此实际参数不能具有需要升级的类型。这意味着将提升为 或 的 type 和 (either or ) 参数以及将提升为 的 type 参数将不被允许。char
short
signed
unsigned
int
unsigned int
float
double
的定义不使用其类型将受到升级的任何参数,因此声明是有效的。change_order
在声明中使用空参数列表被认为是过时的功能,因为它会阻止参数的编译类型检查,应避免使用声明其参数类型的声明。
直到并包括 C17 (C18),您可以逃脱惩罚。
从 C23 开始,当它发布时,这将是不允许的。
在旧版本的标准中,声明 of 表示函数存在并返回(无),但对其参数的数量或类型一无所知,只是它不是可调参数函数(类似于 — 其原型不以 结尾)。它不提供函数的原型,只是一个声明。void change_order();
void
printf()
, ...
在 C23 中,该声明将与 — 一个不带参数且不返回值的函数相同。然后,带有参数的定义将与声明冲突并被拒绝,带有参数的调用也将被拒绝。void change_order(void);
不要使用过时的符号 - 它的有用寿命充其量以月为单位。
你还问你是否可以写.void change_order(int array[int n])
答案是否定的。如果定义得当,也许可以写。但是,使用可变长度数组编写函数的正常方法是 ,或用于首选项。void change_order(int array[n]);
n
void change_order(int n, int array[n])
size_t n
评论