这个C函数声明究竟有什么特殊之处,能让人好奇地问出这样的问题?

2026-04-17 00:192阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计719个文字,预计阅读时间需要3分钟。

这个C函数声明究竟有什么特殊之处,能让人好奇地问出这样的问题?

参考连接:https://www.runoob.com/cprogramming/c-functions.

函数声明可以告知编译器函数名称、返回类型以及参数类型,而函数的实际主体定义了函数的行为。以下是函数声明的简单说明:

函数声明:- 函数声明用于告知编译器函数的存在及其参数和返回类型。- 函数声明不包含函数体,只包含函数的头部信息。- 例如:`int add(int a, int b);`

函数定义:- 函数定义包含了函数声明和函数体。- 函数体包含了函数的具体实现,即函数要执行的操作。- 例如:`int add(int a, int b) { return a + b; }`

参考连接:www.runoob.com/cprogramming/c-functions.html

函数声明

函数声明可以告诉编译器函数名称以及如何调用函数,而函数的实际主体可以单独定义(就是简单的声明一下)
在函数声明中,参数的名称并不重要,只有参数的类型是必需的,因此下面也是有效的声明:
int max(int, int);

当程序调用函数时,程序的控制权会转移给被调用的函数

函数参数

形参就像函数内部的其他局部变量,当函数执行时被创建,函数执行结束后被销毁
有两种向函数内传递参数的方式:传值调用引用调用
传值调用
就相当于把参数的实际值复制给形参,形参的改变并不会影响实际值
一般情况下使用这个
引用调用
把实际值的地址赋给形参,形参为执行实际值地址的指针
传递指针可以让多个函数访问指针所引用的对象,而不用把对象声明为全局可访问。

/* 函数定义 */ void swap(int *x, int *y) { int temp; temp = *x; /* 保存地址 x 的值 */ *x = *y; /* 把 y 赋值给 x */ *y = temp; /* 把 temp 赋值给 y */ return; } //函数调用 #include <stdio.h> /* 函数声明 */ void swap(int *x, int *y); int main () { /* 局部变量定义 */ int a = 100; int b = 200; printf("交换前,a 的值: %d\n", a ); printf("交换前,b 的值: %d\n", b ); /* 调用函数来交换值 * &a 表示指向 a 的指针,即变量 a 的地址 * &b 表示指向 b 的指针,即变量 b 的地址 */ swap(&a, &b); printf("交换后,a 的值: %d\n", a ); printf("交换后,b 的值: %d\n", b ); return 0; }

这个C函数声明究竟有什么特殊之处,能让人好奇地问出这样的问题?

本文共计719个文字,预计阅读时间需要3分钟。

这个C函数声明究竟有什么特殊之处,能让人好奇地问出这样的问题?

参考连接:https://www.runoob.com/cprogramming/c-functions.

函数声明可以告知编译器函数名称、返回类型以及参数类型,而函数的实际主体定义了函数的行为。以下是函数声明的简单说明:

函数声明:- 函数声明用于告知编译器函数的存在及其参数和返回类型。- 函数声明不包含函数体,只包含函数的头部信息。- 例如:`int add(int a, int b);`

函数定义:- 函数定义包含了函数声明和函数体。- 函数体包含了函数的具体实现,即函数要执行的操作。- 例如:`int add(int a, int b) { return a + b; }`

参考连接:www.runoob.com/cprogramming/c-functions.html

函数声明

函数声明可以告诉编译器函数名称以及如何调用函数,而函数的实际主体可以单独定义(就是简单的声明一下)
在函数声明中,参数的名称并不重要,只有参数的类型是必需的,因此下面也是有效的声明:
int max(int, int);

当程序调用函数时,程序的控制权会转移给被调用的函数

函数参数

形参就像函数内部的其他局部变量,当函数执行时被创建,函数执行结束后被销毁
有两种向函数内传递参数的方式:传值调用引用调用
传值调用
就相当于把参数的实际值复制给形参,形参的改变并不会影响实际值
一般情况下使用这个
引用调用
把实际值的地址赋给形参,形参为执行实际值地址的指针
传递指针可以让多个函数访问指针所引用的对象,而不用把对象声明为全局可访问。

/* 函数定义 */ void swap(int *x, int *y) { int temp; temp = *x; /* 保存地址 x 的值 */ *x = *y; /* 把 y 赋值给 x */ *y = temp; /* 把 temp 赋值给 y */ return; } //函数调用 #include <stdio.h> /* 函数声明 */ void swap(int *x, int *y); int main () { /* 局部变量定义 */ int a = 100; int b = 200; printf("交换前,a 的值: %d\n", a ); printf("交换前,b 的值: %d\n", b ); /* 调用函数来交换值 * &a 表示指向 a 的指针,即变量 a 的地址 * &b 表示指向 b 的指针,即变量 b 的地址 */ swap(&a, &b); printf("交换后,a 的值: %d\n", a ); printf("交换后,b 的值: %d\n", b ); return 0; }

这个C函数声明究竟有什么特殊之处,能让人好奇地问出这样的问题?