函数(一):

函数知识点

函数:能实现某种特定功能的代码

分为系统函数(内置函数) (例如printf scanf  getchar  putchar  time  ..) 和  自定义函数  两类!

c语言中提供上千种函数,根据相似的功能整合到一个头文件中!

stdio.h  头文件:   在main函数没有用到输入输出时,是不需要包含该头文件的!

内置函数的使用:  1.写出包含的头文件  2. 根据函数声明,调用相应的函数

ceil函数,以及floor函数(前面是向上取整,后面是向下取整)(例题:有23个人,从A到B,坐出租车,每次5个人,坐几次)(注意类型转换:强转和隐式转换)

程序执行是从主函数开始,编译时从上往下全部都有

自定义函数时,开放性函数远比封闭函数好

自定义函数写法:  返回类型   函数名字   ([参数1],[参数2])

几个补充知识点:

system("cls");       实现清屏功能

system("pause");  实现冻结屏幕功能(比getchar实用些)

sleep(1000);        实现睡眠1000毫秒功能,注意引用头文件windows.h

软件设计的类型

自顶向下(先写main   再写小函数)

自下往上(先写小函数,最后写main)

原型开发(已经具有软件雏形,只需要丰富内容)(所谓的"山寨")

模块化编程(将一个程序分成模块,比如说文件模块,聊天,访问模块等)

API:(Application Programming Interface)引用程序接口,帮助文档

函数(二):

​​​​​​​​​​​​​​​​​​​​​使用<> 的头文件,包含编译器所在文件夹的头文件。

使用"" 的头文件,包含编译器所在文件夹中的头文件或者工程所在文件夹的头文件(一般都是自己定义的头文件)

一般来说,使用<> 的文件,效率更高

函数调用过程中,程序流会进入子函数,子函数结束后,会返回到函数调用处

子函数写在外面,可被其他所有函数调用!如果卸载main里面,只能被主函数调用

在子函数中,返回类型为void 时,  子函数的return 语句会终止子函数继续运行,返回函数调用处继续运行主函数!

如果函数返回的数据类型不是void,则必须返回一个数值

子函数只能返回一个数字,并不能返回两个以上的数字

函数的参数传递:

传值

传址(典型应用:  设置一个交换函数,交换后输出)

上图通过传值,最终没有通过子函数实现两个数的交换,而下图的传址却可以

#include

void swap(int *a,int *b);

main()

{

int a,b,*c=2;

printf("请输入a和b的值:");

scanf("%d%d",&a,&b);

swap(&a,&b);

printf("主函数交换后输出:%d %d\n",a,b);

}

void swap(int *a,int *b)//交换两个数并输出

{

int temp=*a; //或者 int *z;

*a=*b; // z=x;

*b=temp; // x=y;

// y=z;

printf("子函数交换后输出:%d %d\n",*a,*b);

}

数组作为参数传递时,是传递地址的,而数组名字便可代表首地址,因此直接写名字就可以,如下图(此时a数组和x数组共享一个内存)

#include

void swap(int x[2]);

main()

{

int a[2]={1,2};

swap(a);

}

void swap(int x[2])//交换两个数并输出

{

printf("%d %d \n",x[0],x[1]);

}

全局变量和局部变量:

局部变量:定义在函数内部的变量,作用范围(实质上是由{ } 说了算)只在当前函数有效

全局变量:定义在函数外部的变量,作用范围(实质上是由{ } 说了算)只在当前程序有效

全局变量和局部变量同名时,局部优先!

静态变量:每次调用静态变量都会保持上次调用之后的结果(如下图)

#include

int a=4;

int f(int n)//第一次调用:t=7; t=7+5=12; 第二次: t=6; t=t+6=12;

{

int t=0;

static int a=5;

if(n%2)

{

int a=6;

t+=a++;

}

else

{

int a=7;

t+=a++;

}

return t+a++;

}

main()

{

int s=a,i=0;

for(;i<2;i++)

s+=f(i);

printf("%d\n",s);

}

C语言调用自定义交换函,C语言函数篇 - personal page of Msingwen - OSCHINA - 中文开源技术交流社区...相关推荐

  1. 约瑟夫环c语言计蒜客链表,约瑟夫环的故事 - osc_3n35hvex的个人空间 - OSCHINA - 中文开源技术交流社区...

    usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading. ...

  2. c语言n个测试用例0为结束,编写测试用例 - osc_4l0h8in9的个人空间 - OSCHINA - 中文开源技术交流社区...

    软件测试用例: 软件测试用例就是指导你执行测试,帮助你证明软件功能或发现软件缺陷的一种说明. 可以总结为:每一个测试点的数据设计的步骤设计. 微信红包用例? 用例编号:HB_001 功能模块:发送红包 ...

  3. JAVA调用数据泵,数据泵导出和导入 - lsj_syy的个人空间 - OSCHINA - 中文开源技术交流社区...

    Oracle 数据泵(IMPDP/EXPDP)导入导出总结 Oracle数据泵导入导出是日常工作中常用的基本技术之一,它相对传统的逻辑导入导出要高效,这种特性更适合数据库对象数量巨大的情形,因为我日常 ...

  4. c语言处理字符串函数的头文件,C语言字符处理函数 - 20131125的个人空间 - OSCHINA - 中文开源技术交流社区...

    C语言提供了丰富的字符串处理函数, 大致可分为字符串的输入.输出.合并.修改.比较.转换.复制.搜索几类. 使用这些函数可大大减轻编程的负担.用于输入输出的字符串函数,在使用前应包含头文件" ...

  5. java实现自举_实现语言的自举 - 沙枣的个人空间 - OSCHINA - 中文开源技术交流社区...

    几乎所有的语言项目,其核心都是用更底层的语言写的. 底层语言大部分是 C,C++,而扩展这门语言的核心,就要用另外一种语言 去写.这给语言设计者较大的挑战. 开发语言必须具备底层语言的编写能力,而为了 ...

  6. C语言调用自定义交换函,通过调用自定义函数来完成求圆柱体的体积

    float vol=vol(float x,float y); ----函数头声明,和变量声明, #include #include intmain() { floatr,h,S,V; printf( ...

  7. c 调用mysql密码为空_C语言连MySQL - osc_srnunz15的个人空间 - OSCHINA - 中文开源技术交流社区...

    连接例程 用C语言连接MySQL数据库包含两个步骤" 初始化一个连接句柄结构: 实际进行连接. 初始化连接句柄 #include MYSQL *mysql_init(MYSQL *); 通常 ...

  8. qt调用c语言编写的dll文件,Qt之调用外部DLL - moki_oschina的个人空间 - OSCHINA - 中文开源技术交流社区...

    预备知识: 1.如果在没有导入库文件(.lib),而只有头文件(.h)与动态链接库(.dll)时,我们才需要显示调用,如果这三个文件都全的话,我们就可以使用简单方便的隐式调用. 2.通常Windows ...

  9. c语言调用json编程,c语言开发JSON - wangxuwei的个人空间 - OSCHINA - 中文开源技术交流社区...

    安装json-c 库 $ sudo apt-get install libjson0-dev libjson0 代码json_test.c #include #include #include #in ...

最新文章

  1. LeetCode-动态规划基础题-62. 不同路径
  2. 从0到1,了解NLP中的文本相似度 1
  3. 唐骏《我的成功也可以复制》1,盖婚房
  4. ga 工具箱 matlab,初识遗传算法之MatlabGA工具箱
  5. python--时间日期
  6. Yii2修改默认控制器
  7. 基于javaweb的物资配送管理系统_基于JAVA的物流配送管理系统毕业设计书
  8. rainmeter使用教程_如何使用Rainmeter自定义Windows桌面
  9. Java 导出 PDF之固定模板导出
  10. 打造高效研发团队 (3) —— 绩效考核篇
  11. 【OpenCV入门教程之五】 分离颜色通道多通道图像混合
  12. 加速下载ardupilot工程
  13. 前端开发使用的 安卓模拟器_7个最佳的Android模拟器
  14. 修改gh-ost源码实现两表在线高速复制
  15. LeetCode刷题之1436. 旅行终点站
  16. 沈航C语言上机实验题答案,2017年沈阳航空航天大学航空航天工程学部823C语言程序设计考研题库...
  17. 鼠标滚轮调节音量 (含程序和源程序下载)
  18. 图元和片元_顶点(vertexs) 图元(primitives) 片元(fragments片断) 像素(pixels)...
  19. Python_Task08:模块与datetime模块
  20. SpringCloud重试机制配置

热门文章

  1. [原创]CAN总线数据计算器V1.01
  2. Activity中finish()和onDestroy()的区别
  3. Linux下多进程服务端客户端模型二(粘包问题与一种解决方法)
  4. java 程序执行原理
  5. MySQL不支持top n的语法
  6. Foxmail添加微软最新outlook.com邮箱解决方案
  7. 运行adb devices命令后 显示 List of devices attached 无法获取设备解决方法
  8. HttpURLConnection的流式输出的缺陷和解决方法
  9. 解决jQgrid 设置列宽度自动调整时, 出现滚动条问题.
  10. 【报告分享】元宇宙发展研究报告2.0-清华大学.pdf(附下载链接)