C语言调用自定义交换函,C语言函数篇 - personal page of Msingwen - OSCHINA - 中文开源技术交流社区...
函数(一):
函数知识点
函数:能实现某种特定功能的代码
分为系统函数(内置函数) (例如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 - 中文开源技术交流社区...相关推荐
- 约瑟夫环c语言计蒜客链表,约瑟夫环的故事 - osc_3n35hvex的个人空间 - OSCHINA - 中文开源技术交流社区...
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading. ...
- c语言n个测试用例0为结束,编写测试用例 - osc_4l0h8in9的个人空间 - OSCHINA - 中文开源技术交流社区...
软件测试用例: 软件测试用例就是指导你执行测试,帮助你证明软件功能或发现软件缺陷的一种说明. 可以总结为:每一个测试点的数据设计的步骤设计. 微信红包用例? 用例编号:HB_001 功能模块:发送红包 ...
- JAVA调用数据泵,数据泵导出和导入 - lsj_syy的个人空间 - OSCHINA - 中文开源技术交流社区...
Oracle 数据泵(IMPDP/EXPDP)导入导出总结 Oracle数据泵导入导出是日常工作中常用的基本技术之一,它相对传统的逻辑导入导出要高效,这种特性更适合数据库对象数量巨大的情形,因为我日常 ...
- c语言处理字符串函数的头文件,C语言字符处理函数 - 20131125的个人空间 - OSCHINA - 中文开源技术交流社区...
C语言提供了丰富的字符串处理函数, 大致可分为字符串的输入.输出.合并.修改.比较.转换.复制.搜索几类. 使用这些函数可大大减轻编程的负担.用于输入输出的字符串函数,在使用前应包含头文件" ...
- java实现自举_实现语言的自举 - 沙枣的个人空间 - OSCHINA - 中文开源技术交流社区...
几乎所有的语言项目,其核心都是用更底层的语言写的. 底层语言大部分是 C,C++,而扩展这门语言的核心,就要用另外一种语言 去写.这给语言设计者较大的挑战. 开发语言必须具备底层语言的编写能力,而为了 ...
- C语言调用自定义交换函,通过调用自定义函数来完成求圆柱体的体积
float vol=vol(float x,float y); ----函数头声明,和变量声明, #include #include intmain() { floatr,h,S,V; printf( ...
- c 调用mysql密码为空_C语言连MySQL - osc_srnunz15的个人空间 - OSCHINA - 中文开源技术交流社区...
连接例程 用C语言连接MySQL数据库包含两个步骤" 初始化一个连接句柄结构: 实际进行连接. 初始化连接句柄 #include MYSQL *mysql_init(MYSQL *); 通常 ...
- qt调用c语言编写的dll文件,Qt之调用外部DLL - moki_oschina的个人空间 - OSCHINA - 中文开源技术交流社区...
预备知识: 1.如果在没有导入库文件(.lib),而只有头文件(.h)与动态链接库(.dll)时,我们才需要显示调用,如果这三个文件都全的话,我们就可以使用简单方便的隐式调用. 2.通常Windows ...
- c语言调用json编程,c语言开发JSON - wangxuwei的个人空间 - OSCHINA - 中文开源技术交流社区...
安装json-c 库 $ sudo apt-get install libjson0-dev libjson0 代码json_test.c #include #include #include #in ...
最新文章
- LeetCode-动态规划基础题-62. 不同路径
- 从0到1,了解NLP中的文本相似度 1
- 唐骏《我的成功也可以复制》1,盖婚房
- ga 工具箱 matlab,初识遗传算法之MatlabGA工具箱
- python--时间日期
- Yii2修改默认控制器
- 基于javaweb的物资配送管理系统_基于JAVA的物流配送管理系统毕业设计书
- rainmeter使用教程_如何使用Rainmeter自定义Windows桌面
- Java 导出 PDF之固定模板导出
- 打造高效研发团队 (3) —— 绩效考核篇
- 【OpenCV入门教程之五】 分离颜色通道多通道图像混合
- 加速下载ardupilot工程
- 前端开发使用的 安卓模拟器_7个最佳的Android模拟器
- 修改gh-ost源码实现两表在线高速复制
- LeetCode刷题之1436. 旅行终点站
- 沈航C语言上机实验题答案,2017年沈阳航空航天大学航空航天工程学部823C语言程序设计考研题库...
- 鼠标滚轮调节音量 (含程序和源程序下载)
- 图元和片元_顶点(vertexs) 图元(primitives) 片元(fragments片断) 像素(pixels)...
- Python_Task08:模块与datetime模块
- SpringCloud重试机制配置
热门文章
- [原创]CAN总线数据计算器V1.01
- Activity中finish()和onDestroy()的区别
- Linux下多进程服务端客户端模型二(粘包问题与一种解决方法)
- java 程序执行原理
- MySQL不支持top n的语法
- Foxmail添加微软最新outlook.com邮箱解决方案
- 运行adb devices命令后 显示 List of devices attached 无法获取设备解决方法
- HttpURLConnection的流式输出的缺陷和解决方法
- 解决jQgrid 设置列宽度自动调整时, 出现滚动条问题.
- 【报告分享】元宇宙发展研究报告2.0-清华大学.pdf(附下载链接)