【C语言】基础篇二、函数

本文详细介绍了C语言中的函数,包括函数的定义、分类(库函数与自定义函数)、参数传递(传值与传址)、函数调用、函数嵌套与链式访问、递归概念及实践。通过实例讲解了如何编写和使用函数,涉及递归函数的应用,如素数判断、闰年检测等,并探讨了递归与迭代的区别。
摘要由CSDN通过智能技术生成

函数是什么

维基百科中对函数的定义:子程序

  • 在计算机科学中,子程序,是一个大型程序中的某部分代码, 由一个或多个语句块组成。它负责

完成某项特定任务,而且相较于其他代码,具备相对的独立性

  • 一般会有输入参数并有返回值,提供对过程的封装和细节的隐藏。这些代码通常被集成为软件库

C语言函数的分类

  1. 库函数
  2. 自定义函数

库函数

如:printfscanfstrlenstrcmprandsrandtime

C语言并不直接实现库函数,而是提供了C语言的标准和库函数的规定(功能、名称、参数、返回值、返回类型…),库函数的实现一般是由编译器实现的

把常用的一些功能实现成函数,集成为库,由C语言直接提供,支持可移植性和提高程序的效率

使用库函数必须包含对应的头文件**#include <.h>**

库函数查询:

cplusplus.com(旧版)推荐

MSDN (Microsoft Developer Network)

MSDN离线版(使用索引而不是搜索)

https://en.cppreference.com(英文版)

https://zh.cppreference.com(中文版,翻译比较准确但不够直观,搜索功能使用的是谷歌)

C语言常用库函数:

  • IO函数(输入输出函数:scanfprintfgetcharputchar、…)
  • 字符串操作函数(strlenstrcmp、…)
  • 字符操作函数(islower(判断某个字符是否为小写)、isupper(判断某个字符是否为大写)、…)
  • 内存操作函数(memsetmemcmp、…)
  • 时间/日期函数(time、…)
  • 数学函数(sqrt(求平方根)、pow(求指定次方)、…)
  • 其他库函数

strcpy

string copy——字符串拷贝

char * strcpy (char * destination, const char * source);

str1拷贝到str2中:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>

int main()
{
    char str1[4] = { 'a', '\0', 'b', '\0' };//'a' '\0' 'b' '\0'
    char str2[5] = "xxxx";//'x' 'x' 'x' 'x' '\0'
    strcpy(str2, str1);//左粘贴,右复制,
    printf("%s\n", str2);//只打印a,因为修改后str2的元素为'a' '\0' 'x' 'x' '\0'
    return 0;
}

结论:str1从起始字符开始,直到第一个'\0'会被拷贝到str2中,其余元素不发生拷贝

memset

memory set——内存设置(内存块填充)

void * memset (void * ptr, int value, size_t num);

sizeof返回的值的类型是size_t,size_t就是专门为sizeof创建的,其本质就是unsigned int(无符号整型),因为其求大小不可能求出负数

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>//memset

int main()
{
    char str[] = "hello bit";
    memset(str, 'x', 5);//单位字节
    memset(str + 6, 'x', 3);//从中间开始填充
    printf("%s", str);//xxxxx xxx
    return 0;
}

自定义函数

自定义函数和库函数一样,有返回值类型、函数名、函数参数、函数体,但这些都是自己设置并实现的

求最大值
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

int get_max(int x, int y)
{
    return (x > y) ? (x) : (y);
}

int main()
{
    int num1 = 0;
    int num2 = 0;
    scanf("%d %d", &num1, &num2);
    int max = get_max(num1, num2);
    printf("max = %d\n", max);
    return 0;
}
整型变量交换
#define _CRT_SECURE_NO_WARNINGS 1
#in
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值