首页 > 其他分享 >C语言初阶(4)

C语言初阶(4)

时间:2024-07-25 22:30:27浏览次数:11  
标签:传址 初阶 函数 形参 C语言 调用 实参 库函数

1.C语言中函数的定义

在计算机科学中,子程序(英语:Subroutine, procedure, function, routine, method, subprogram, callable unit),是一个大型程序中的某部分代码, 由一个或多个语句块组 成。它负责完成某项特定任务,而且相较于其他代 码,具备相对的独立性。 一般会有输入参数并有返回值,提供对过程的封装和细节的隐藏。这些代码通常被集成为软件库。

函数被分类成库函数和自定义函数

2.库函数

在C语言初期并没有库函数,但是在开发实际中有一些函数被频繁使用,为了书写的简便性和正确率,程序员设置了一些特定函数来发挥特定作用例如函数time,strcmp,rand, srand.......

库函数在使用的时候要使用相应的头文件

我们可以使用以下工具学习使用库函数

MSDN(Microsoft Developer Network)

www.cplusplus.com

http://en.cppreference.com(英文版)——---------C语言官网

http://zh.cppreference.com(中文版)

3.自定义函数

自定义函数顾名思义由程序员自己编写函数,同样包含返回类型,函数名,函数参数和最重要的函数体,函数在一定程度上简便了代码的书写,最重要的是函数单一化作用极大的提高可操作性,同时可以使代码更加复杂化和多元化。

函数参数分为实际参数(实参)和形式参数(形参)。实际参数就是传给函数的参数,有常量,变量,表达式,函数等,但是无论是什么形式,实参必须是一个确定的值;形参就是函数参数,在函数调用时,才分配内存,在函数结束时销毁,最重要的一点是函数调用时,形参是实参的临时拷贝,对于形参的改变不影响实参。如图1

函数调用有两种形式,一种是传值调用,另一种是传址调用。传值调用实参传给形参的是值,传址调用实参传给形参的是地址,使用指针接收。如图2

下面介绍一下交换数值的代码怎么写

图2 

图2

 说一下我的个人理解:我们把内存想象成一个酒店,地址想象成门牌号,数值相当与居住在房间中的你;图一中传值调用先当与复制了一个一模一样的你在另一个房间,改变你的复制品改变和你没有关系;图二中传址调用是通过地址(也就是指针)找到你,从而实现改变你的目的。

我们可以简单的理解是:形参实例化之后其实相当于实参的一份临时拷贝。

此外,函数的返回值有没有的区别是,返回值要返回到函数上,无返回是只是不输出数值,仍旧需要执行主函数内的代码。

函数具体使用传址还是传值就看你是否想要改变实际参数。

4.练习

(1)写一个函数可以判断一个数(100-200)是不是素数。

未使用函数

函数 

 优化后

库函数sqrt()是开根号,得到数据类型是double,头文件是math.h。

(2)写一个函数判断一年(1000-2000)是不是闰年。

 

非函数

函数

(3)写一个函数,实现一个整形有序数组的二分查找。

标签:传址,初阶,函数,形参,C语言,调用,实参,库函数
From: https://blog.csdn.net/2401_86372508/article/details/140675086

相关文章

  • Linux--C语言数据类型转换
    目录一、数据类型之间的转换(一)规则:不同的数据类型参与运算,需要转换为同一类型后运算1.数值比较由小到大简单排序:2.隐式类型转换3.强制类型转换二、运算符(一)算术运算符1.单目运算符(1)++i与i++的区别(2)--i和i--区别2.双目运算符3.三目运算符(二)关系运算符(1)什么是......
  • C语言常见操作符(补充)
    前言:在这篇文章中,我们将会认识到更多的C语言操作符,并通过简单的介绍和相应的代码,来更好的了解它们。位操作符:位操作符在计算机中以二进制的形式,进行运算。&按位与                                         |按位或   ......
  • C语言知识大闯关之二维数组与变长数组
    目录引言1.二维数组的创建1.1二维数组的概念1.2二维数组的创建2.二维数组的初始化2.1不完全初始化2.2完全初始化2.3按照行初始化2.4初始化时省略行,但不可以省略列3.数组的使用3.1二维数组的下标3.2二维数组的输入和输出二维数组在内存中的存储4.C99中的变长数组引......
  • C语言分支语句之if的一些用法
    目录引言C语言结构1.if语句1.1if1.2else2.分支中包含多条语句3.多重选择elseif4.嵌套if5.悬空else/else与if配对问题引言C语言作为一种非常常用的编程语言,具有灵活强大的循环和分支结构。循环结构允许我们重复执行一段代码,而分支结构则允许我们根据条......
  • 麻了,麻了,终于知道c语言为啥那么容易从入门到放弃了
    麻了,麻了,这谁看不迷糊。(温馨提示:出题时程序一般不会将每一种情况列出,会选其中一个或多个;请勿以答案相同认为思路相同)见了这种题怎么办?猜?这多少分之一的概率?死记?它变个数字又不同了,那得记多少?放弃?好像只能这样了。(不行,不行)今天,博主来教你们彻底解决这些问题。众所周知整......
  • 嵌入式学习第9天——C语言运算符,程序设计结构,输入输出缓冲机制
    2024.7.25第九天笔记关于++混合操作,不同计算结果推理第一种编译结果:inti=5;intsum=(++i)+(++i)=6+7=13第二种编译结果:inti=5;intsum=(++i)+(++i)=6+7=7+7前面的7是因为后面i的变化被影响后,重新赋值=14第一种编译结果:inti=5;in......
  • C语言i++和++i操作
    关于++混合操作,不同计算结果推理第一种编译结果:inti=5;intsum=(++i)+(++i)=6+7=13第二种编译结果:inti=5;intsum=(++i)+(++i)=6+7=7+7前面的7是因为后面i的变化被影响后,重新赋值=14第一种编译结果:inti=5;intsum=(++i)+(i++)=......
  • 学懂C语言(二十五):深入理解 C语言结构体 位域 的概念
            目录一、位域的基本概念二、位域的定义三、位域的内存分配和大小计算示例1:简单位域示例2:跨越多个存储单元注意事项结构体对齐控制总结        C语言中的位域(Bit-Field)是一种特殊的数据结构,允许在结构体中定义占用特定位数的成员,主要用于节......
  • C语言:字符串函数、内存函数剖析
    字符串函数、内存函数剖析一、字符串函数(一)求字符串长度1、strlen(1)库函数实现(2)自定义实现(二)长度不受限制的字符串函数1、strcpy(1)库函数实现(2)自定义实现2、strcat(1)库函数实现(2)自定义实现3、strcmp(1)库函数实现(2)自定义实现(三)长度受限制的字符串函数介绍1、strncpy2、s......
  • 随记0000——从0、1 到 C语言
    C语言的发展历程是计算机科学史上的一个重要里程碑。下面是从最早的机器语言到汇编语言,再到高级语言如C语言的简化演进过程:1.机器语言定义与特点机器语言是最底层的编程语言,由一系列二进制代码组成。直接被CPU执行,无需转换或编译。难以阅读、编写和维护。2.汇编语......