c语言程序设计第四章笔记,c语言前四章编程例题及答案
目录
1.什么是函数?
二、C语言中函数的分类
1.库函数
2.自定义功能
第三,函数调用
四。链式存取
第五,函数递归
【前言】:函数是学习C语言的重点内容之一,一定不能掉以轻心。不难,但是要多花时间去理解。我可以,我相信你也可以。让我们一起加油吧!
1.函数数学中常见的函数概念是什么?但是你了解C语言中的函数吗?
维基百科对函数的定义:子程序
在计算机科学中,子程序是大程序中代码的一部分,由一个或多个语句块组成。它负责完成一项特定的任务,与其他代码相比相对独立。一般来说,有输入参数,有返回值,提供了流程的封装和细节的隐藏。二、C语言库函数中函数的分类函数自定义函数1。库函数为什么有库函数?
1.我们知道,在学习C语言编程的时候,我们总是迫不及待地想知道一段代码写完之后的结果,想把结果打印到我们的屏幕上看一看。这个时候我们会频繁使用一个功能:在屏幕上以某种格式打印信息(printf)。
2.在编程的过程中,我们会经常做一些字符串复制(strcpy)。
3.在编程中,我们也计算,而且总是计算n的k次方(pow)。
像我们上面描述的基本功能一样,它们不是业务代码。在开发过程中,每个程序员都可以使用它。为了支持可移植性,提高程序效率,C语言基本库提供了一系列类似的库函数,方便程序员开发软件。
那么如何学习库函数呢?
作者使用了MSDN,这是一个涵盖了几乎所有C语言库函数的文档。
输入想要查找的库函数名称,就会显示出对应的函数原型,以及如何使用等。非常方便。
简单总结一下,C语言中常用的库函数有:
IO字符串操作函数字符操作函数内存操作函数时间/日期函数数学函数其他库函数注意:使用库函数时必须知道的一个秘密是,使用库函数时,必须包含#include对应的头文件!
哦,注意,英语其实很重要。最起码,你应该会看文献吧!但是不要怕铁汁,多看多搜,慢慢的你就熟悉套路了。加油!
2.自定义函数如果库函数什么都能做,程序员还做什么?
更重要的是自定义函数。
像库函数一样,自定义函数也有函数名、返回值类型和函数参数。但不同的是,这些都是我们自己设计的。这给了程序员很大的发挥空间。
第三,函数调用
用一个容易出错的问题引入知识点:交换两个变量的值
#包含stdio.h
//定义一个交换两个整型变量的值的函数
void swap1(整数1,整数2)
{
int temp=num1
num1=num2
num2=temp
}
int main()
{
int num1=10
int num2=20
Printf(交换前:\ n );
printf(%d %d\n ,num1,num 2);
putchar( \ n );
swap1(num1,num 2);//函数调用
Printf(交换后:\ n );
printf(%d %d\n ,num1,num 2);
返回0;
}可能大家都会写上面的代码,但实际上它运行的时候并没有得到我们想要的答案。不要相信我。
程序虽然运行了,但是没有得到我们想要的答案。为什么?
这说明程序没有语法错误,但是有逻辑问题。
这就要提到一个考点了:
函数通过值调用时,实参传递给形参,形参实际上是实参的临时副本,所以形参的修改不会影响实参。
所以重写如下:
#包含stdio.h
//函数定义
void swap2(int* num1,int* num2)
{
int temp=* num1
* num1=* num2
* num2=temp
}
int main()
{
int num1=10
int num2=20
Printf(交换前:\ n );
printf(%d %d\n ,num1,num 2);
putchar( \ n );
swap1( num1,num 2);//函数调用
Printf(交换后:\ n );
printf(%d %d\n ,num1,num 2);
返回0;
}
这就实现了交换。为什么swap1不行,swap2可以?
Swap1是一个值传递调用。参数num1、num2和参数x、y不使用相同的内存空间。尽管参数与实参具有相同的内容,但它们占用不同的内存块。此时,参数相当于实参的临时副本,对参数的修改不会影响实参。
Swap2是地址调用,实际实参的地址放在形参中。这种传递参数的方式可以在参数和实参之间建立真正的联系。这时候修改参数就可以改变函数外的实参。
至于函数调用,需要注意的是函数可以嵌套,但是定义不能嵌套。
四。链式存取
链式访问是:把一个函数的返回值作为另一个函数的参数。
比如:
char arr[20]= hello ;
printf(%d\n ,strlen(arr));//这是链式访问呵呵,这里有个好玩的笔测:
printf(%d ,printf(%d ,printf(%d ,43));屏幕上印的是什么?
屏幕上印的是:4321
为什么?这个有点混乱,我来帮铁汁解决混乱。
printf()函数的返回值是打印在屏幕上的字符数。
这个知识点就讲到这里。我们自己试着去理解吧。
动词(verb的缩写)函数递归函数递归真的很重要!不过我在之前的博文里已经说的很清楚了。铁汁一定要看看!
第二章,蓝杯算法竞赛系列,3354章,深入理解重难点递归(上)
好了,今天的功能到此为止。这部分内容不多,但是本文提到的知识点都很重要。小朋友一定要花点时间。给你一朵小红花。
安然无恙。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。