介绍
c语言中函数用于执行特定的任务并返回值。在编写程序时,函数返回的类型由函数声明的返回类型或函数原型中的返回类型决定。如果函数没有返回类型,则默认返回 int 类型值。
函数的返回类型
函数的返回类型指的是函数返回的值的数据类型。C语言支持以下数据类型的函数返回类型:
void
char
short
int
long
float
double
结构体
指针
枚举
需要注意的是,虽然 C99 支持 _Complex 和 _Imaginary 复数类型,但不允许将它们用作函数的返回类型。
void类型的函数返回值
当函数返回类型为 void 时,表示该函数不返回任何值,或者说没有返回值。这通常用于函数只需要执行特定任务但不需要返回值的情况。
下面是一个返回类型为 void 的函数的示例:
#include <stdio.h>
void say_hello() {
printf("Hello!\n");
}
int main() {
say_hello();
return 0;
}
在该示例中,say_hello() 函数的返回类型为 void,它只执行一项任务,即输出 "Hello!"。在主函数中,我们调用了 say_hello() 函数来输出消息。
基本数据类型的函数返回值
除了 void 类型之外,函数可以返回以下基本数据类型:
char
short
int
long
float
double
下面是一个返回类型为 int 的函数示例:
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
int main() {
int x = 2, y = 3;
int result = add(x, y);
printf("%d + %d = %d\n", x, y, result);
return 0;
}
在该示例中,我们定义了一个返回类型为 int 的函数 add(),它接受两个 int 类型的参数并返回他们的和。在主函数中,我们声明了 x 和 y 两个变量并将它们的值分别设置为 2 和 3。然后我们调用 add() 函数并将结果存储在 result 变量中,最后输出 x + y = result 的结果。
结构体和指针的函数返回值
C语言还支持将结构体和指针用作函数的返回类型。下面是一个返回结构体类型的函数的示例:
#include <stdio.h>
struct student {
char name[20];
int roll_no;
};
struct student create_student(char name[], int roll_no) {
struct student s;
strcpy(s.name, name);
s.roll_no = roll_no;
return s;
}
int main() {
struct student s1 = create_student("Alex", 5);
printf("Name: %s, Roll No: %d\n", s1.name, s1.roll_no);
return 0;
}
在该示例中,我们定义了一个 student 结构体,其中包含一个 name 字符数组和一个 roll_no 整数。接下来,我们定义了一个 create_student() 函数,该函数接受一个 name 字符数组和一个 roll_no 整数参数,并返回一个 student 结构体。在函数中,我们创建了一个名为 s 的 student 结构体,并使用 strcpy() 函数将 name 参数复制到结构体的 name 字段中。然后我们为结构体的 roll_no 字段设置了值,并最终返回了 s 结构体。在主函数中,我们调用 create_student() 函数来创建一个学生结构体,并输出结构体中的信息。
下面是一个返回指针类型的函数的示例:
#include <stdio.h>
#include <stdlib.h>
int* create_array(int size) {
int* array = (int*)malloc(size * sizeof(int));
return array;
}
int main() {
int* arr = create_array(5);
for(int i = 0; i < 5; i++) {
arr[i] = i + 1;
printf("%d ", arr[i]);
}
free(arr);
return 0;
}
在该示例中,我们定义了一个 create_array() 函数,该函数接受一个整数参数 size 并返回一个指向整数数组的指针。在函数中,我们使用 malloc() 函数动态分配一个大小为 size * sizeof(int) 的数组并返回它。在主函数中,我们调用了 create_array() 函数,并使用返回的数组指针存储了数字 1 至 5。最后,我们使用 free() 函数释放了数组的存储空间,以避免内存泄漏。
结论
在 C语言中,函数返回的类型由函数声明的返回类型或函数原型中的返回类型决定。除了 void 类型之外,函数可以返回各种基本数据类型、结构体和指针。在编写程序时,我们必须明确函数的返回类型,并将其用于适当的上下文中。