📅  最后修改于: 2023-12-03 15:13:44.647000             🧑  作者: Mango
在 C 和 C++ 中,参数和参数之间的差异在概念上并不大。然而,它们的语法和实现方式略有不同。以下是两种语言之间的比较。
C 和 C++ 函数都采用相同的语法来定义参数。在函数声明或定义中,函数名称后跟一对圆括号,其中参数列表在内部。例如,下面是一个包含两个参数的函数 add
的定义。
int add(int a, int b) {
return a + b;
}
在参数列表中,每个参数都是由逗号分隔的类型和名称组成的。
在函数调用中,实参被传递给被调用函数。在 C 中,传递实参的方式是调用函数时将它们复制到函数的形参位置。在 C++ 中,也是类似的方式。但是,在 C++ 中,如果形参使用引用而不是值,则将实参的引用传递给函数。这意味着函数可以直接修改实参的值,而无需创建副本。例如:
void increment(int &x) {
x++;
}
int main() {
int a = 5;
increment(a);
cout << a; // 打印 6
return 0;
}
C 和 C++ 在参数之间的语法上有所不同。C 中的函数声明和定义允许在函数名后放置空的括号,以表示不接受任何参数。例如:
int foo(); // 函数 foo 不接受任何参数
然而,在 C++ 中,一个空的括号表示的是一个不确定数量的参数。因此,一个不接受任何参数的函数必须明确地使用 void
来表示。
int foo(void); // 函数 foo 不接受任何参数,使用 void 表示
此外,在 C 中,未声明的函数接受任何数量和任何类型的参数。这意味着,在 C 中,代码可以编译通过,但在运行时可能产生未定义的行为,因为函数会接受错误类型或数量的实参。在 C++ 中,未声明的函数被视为不接受任何参数。
以下是一个示例程序,在 C 和 C++ 中演示了函数参数和参数之间的差异。
#include <stdio.h>
/// C 中的函数声明
int add_c(int, int);
int hello_c();
/// C++ 中的函数声明
int add_cpp(int a, int b);
int hello_cpp(void);
int main() {
// 调用函数 add_c
printf("[C] The sum of 2 and 3 is %d\n", add_c(2, 3));
// 调用函数 hello_c
hello_c();
// 调用函数 add_cpp
printf("[C++] The sum of 5 and 7 is %d\n", add_cpp(5, 7));
// 调用函数 hello_cpp
hello_cpp();
}
// C 中的函数定义
int add_c(int a, int b) {
return a + b;
}
int hello_c() {
printf("[C] Hello, world!\n");
return 0;
}
// C++ 中的函数定义
int add_cpp(int a, int b) {
return a + b;
}
int hello_cpp(void) {
printf("[C++] Hello, world!\n");
return 0;
}
输出:
[C] The sum of 2 and 3 is 5
[C] Hello, world!
[C++] The sum of 5 and 7 is 12
[C++] Hello, world!