C语言自定义函数

函数定义

return_type function_name([datatype1 arg1],[datatype1 arg2],...)

{

        //函数体

}

函数三要素

返回值类型

函数名

参数列表

自定义函数的完整写法

#include <stdio.h>

// 函数原型

int sum(int,int);

// 调用函数

int main()

{

        int sum();

}

// 函数定义

int sum(int num1,int num2)

{

        //函数实现的代码

}

注意:

  1. 函数原型与函数定义的头部类似,函数原型最后以分号结尾
  2. 函数原型中的参数名称可以省略,只写参数类型

练习

三种图形的面积计算公式如下:

圆:s = PI * r * r;

矩形:s = width * height;

使用函数分别实现图形的面积计算,打印计算结果

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
// 函数原型
void calcCircle(); // 计算圆面积
void calcRectangle(); //计算矩形面积

// 函数定义
void calcCircle()
{
    double r,s; //定义圆的半径和面积
    printf("请输入半径:");
    scanf("%lf",&r);
    s = 3.14 * pow(r,2);
    printf("面积为:%.2lf\n",s);
}
void calcRectangle()
{
    double width,height,s; //定义矩形宽、高和面积
    printf("请输入宽和高:");
    scanf("%lf%lf",&width,&height);
    s = width * height;
    printf("面积为:%.2lf",s);
}
int main()
{
    calcCircle(); // 调用计算圆面积
    calcRectangle(); // 调用计算矩形
}

带返回值的函数

C语言中的返回值

关键词:return

只能返回一个值,不能返回多个值

返回值类型必须与原型中的返回值类型匹配

return会立即终止函数并返回,可返回空值 

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
// 函数原型
int calcSum(); // 求1-100之间的偶数和 
// 函数定义
int calcSum()
{
	// 1-100之间的偶数和
	int sum = 0;
	int i;
	for(i = 1;i <= 100;i++)
	{
		if(i % 2 == 0)
		{
			sum += i;
		}	
	} 
	// 将计算的结果返回
	return sum; 	
} 
// 调用函数
int main()
{
	// 如果函数有返回值,调用时,记得使用对应类型的变量
    int sum = calcSum(); 
	printf("1-100偶数和为:%d",sum);	
}

函数案例

需求:

书写函数实现数组元素的查找,要求返回找到的元素下标

#include <stdio.h>
#include <stdlib.h>
// 书写函数实现数组元素的查找,要求返回找到的元素下标
// 函数原型
int search(); 
// 函数调用
int main() 
{
	int index = search(); // 接收函数里面返回的值
	printf("%d",index);
}
// 函数定义
int search()
{
	int SearchIndex = -1; // 查找数字的下标,初始值一个不存在的下标
	int SearchNum; // 需要查找的数字
	int nums[] = {2,44,99,33,222,1000,99,4}; // 数组
	printf("请输入需要查找的数:");
	scanf("%d",&SearchNum);
	int i;
	for(i = 0;i < 8;i++)
	{
		// 使用指针取值 
		if(SearchNum == *(nums + i))
		{
			SearchIndex = i; // 记录找到元素的下标 
			break;
		}	
	} 
	return SearchIndex; // 返回查找到的元素下标 
}

书写函数实现冒泡排序并返回排序后的数组

#include <stdio.h>
#include <stdlib.h>
// 书写函数实现冒泡排序并返回排序后的数组
// 函数原型
double *sort();
// 函数调用
int main()
{
	sort();
}
// 函数定义
double *sort()
{
	double nums[] = {2,4,9.9,1,4,6};
	double temp; // 中间值
	// 使用双循环排序
	// 交换个数
	for (int i = 0;i < 6;i++)
	{
	    // 交换次数
		for(int j = 0;j < 6 - i - 1;j++)
        {
            if(nums[j] > nums[j + 1])
            {
                temp = nums[j];
                nums[j] = nums[j + 1];
                nums[j + 1] = temp;
            }
		}
	}
	// 使用循环打印
	printf("打印数字内容为:\n");
	for(int i = 0;i < 6;i++)
    {
        printf("%.2lf\t",nums[i]);
	}
    return nums; // //返回值是首地址,函数名和函数原型前面要加*,调用的时候不需要只要函数名
}

注意://返回值是首地址,函数名和函数原型前面要加*,调用的时候不需要只要函数名

C语言自定义函数返回数组、字符串的写法:

小结:

动态分配内存

malloc        (int *)malloc(4 * 5); //强转,5个元素4字节

calloc         calloc(5,4);

free            释放malloc和calloc分配的内存

realloc        推翻malloc和calloc,重新分配动态内存

 (^_-) 我的学习之路任重道远,咱们下期见~~~

  • 8
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值