1-1.函数简单调用

 1 #include<stdio.h>
2 #include<string.h>
3 #include<windows.h>
4 int Move();
5 int Bulid();
6 int Paint();
7 int main ()
8 {
9 Move();
10 Bulid();
11 Paint();
12
13 return 0;
14 }
15 int Move()
16 {
17 printf("调用搬运函数\n");
18 }
19 int Bulid()
20 {
21 printf("调用构建函数\n");
22 }
23 int Paint()
24 {
25 printf("调用粉刷函数\n");
26 }

 一个简单的加法函数功能的实现和调用

 1 #include<stdio.h>
2 int add(int Number1,int Number2); //声明add函数 功能是用来计算加法
3 int main ()
4 {
5 int a,b,sum;
6 scanf("%d %d",&a,&b);
7 sum=add(a,b);//将a和b的值作为函数的实参
8 printf("%d",sum);
9 return 0;
10 }
11
12 int add(int Number1,int Number2) //函数的定义
13 {
14 int result;
15 result=Number1+Number2;
16 return result; //将计算的结果作为函数的返回值
17 }
 1 #include<stdio.h>
2 char ShowChar();
3 int main ()
4 {
5 char cResult;
6 cResult=ShowChar();
7 printf("%c\n",cResult);
8 return 0;
9 }
10 char ShowChar()
11 {
12 int iNumber;
13 printf("Please input a number \n");
14 scanf("%d",&iNumber);
15 return iNumber;
16 }
17 /*
18 程序功能:通过ShowChar函数 得到一个数字 并对照ASCII码 转换为对应的字符 返回到Main函数中的 cResult中 然后打印出来
19 需要注意的是:函数的返回值的类型就是你定义这个函数的类型
20 */

函数的实参和形参是一种很简单的东西 形参就是任何值的实参 很简单的东西 书里面竟然用了 牛奶xx一大堆废话来讲这个 还是郝斌老师说的对 拿现实中的事情 硬套在程序中 这样是没卵用的

  

1-2数组-指针作为函数的参数

注意:当数组作为函数的实参时,只传递数组的地址,而不是将整个数组赋值到函数中,当用数组名作为实参调用函数时,指向该数组的第一个元素的指针就被传递到了函数中

C语言中没有下标的数组而是一个指向该数组第一个元素的指针 其实说的就是数组第一个元素的地址

如 int count [10];        count 就等同于 *count 都表示count数组 第一个元素的地址

(1)数组的元素作为函数的参数 (需要用for循环来对数组中的元素进行遍历 让每一个元素都传入函数中)

show函数用来输出传入的参数

fuuzhi函数用来对传入的参数进行赋值

 1 #include<stdio.h>
2 void show (int number[]);
3 void fuzhi (int number2[]);
4 int main ()
5 {
6 int a[10];
7 fuzhi(a);
8 show(a);
9
10 return 0;
11 }
12
13
14 void show (int number[])
15 {
16 int i ;
17 for(i=0;i<10;i++)
18 {
19 printf(" number[%d]=%d\n",i,number[i]);
20 }
21 }
22
23
24
25 void fuzhi(int number2[])
26 {
27 int i;
28 for(i=0;i<10;i++)
29 {
30 number2[i]=i;
31 }
32 }

(2)将指针作为数组的参数

 1 #include<stdio.h>
2 void evaluate(int * pPoint);
3 void display (int * pPoint);
4 int main()
5 {
6 int iArray[10];
7 evaluate(iArray);
8 display(iArray);
9 return 0;
10 }
11 void display(int * pPoint)
12 {
13 int i;
14 for(i=0;i<10;i++)
15 {
16 printf("The Nmumber is %d\n",pPoint[i]);
17 }
18 }
19 void evaluate(int * pPoint)
20 {
21 int i;
22 for(i=0;i<10;i++)
23 {
24 pPoint[i]=i;
25
26 }
27 }

 2-1.Main函数的形参的简单了解

 Main函数的形参
#include<stdio.h>
/*
3 argc 保存程序传入参数的个数 这个函数的值最小是1 1代表程序本身、
4 字符型数组指针argv[] 数组中每一个元素都指向 命令行实参
5 */
int main (int argc,char *argv[])
{
printf("%s",argv[]); //argv[0]指向1 1代表程序本身 打印程序所在位置
return ;
}

运行结果:

3.函数调用的几种方式

1)简单的函数语句调用

比如movie();

执行函数中的语句

2)函数表达式的调用

函数出现在一个表达式 要求函数返回一个值

比如add()函数用来计算加法的

result=add(4,5)

返回的值就是9 9赋给result

3)函数参数的调用

顾名思义将函数作为函数的参数

比如还是add函数

result=add(add(3,4),9)

add函数里面又嵌入一个函数 最终result的值=16 add(3,4)其实就是一个值 这个值就是add函数返回的值

4)函数的嵌套调用

函数在C语言中是相互平行的 不允许在另一个函数中定义另一个函数 但是函数之间可以相互的调用 是调用函数的功能 并不是在函数a内定义函数b c语言不允许函数的嵌套定义

 比如在a函数中调用b函数

3-1外部函数和内部函数

1)内部函数

定义一个函数 如果只希望它只能被所在的源文件调用就称这样的函数叫做 内部函数 内部函数也被叫做静态函数 使用内部函数 可以让函数只局限在所在的源文件中 如果一个程序的不同源文件文件中有同名的静态函数 这些函数是不会相互干扰的

语法:static 返回值类型 函数名(参数列表)

将外部函数中所演示的程序例子 show.cpp 文件中Show函数 用static修饰成静态类型 看运行结果 报错 说明内部函数 不能被外部源文件所引用

2)外部函数

定义一个函数 希望让这个函数可以在外部源文件中调用 这样的函数就称作外部函数 定义外部函数的时候使用extern关键字进行修饰

语法:extern 返回值类型 函数名 (参数列表)

代码练习:

 //test.cpp 源文件内容
#include<stdio.h>
#include"show.cpp"
int main ()
{
char ch[];
gets(ch);
Show(ch);
return ;
}
 //show.cpp 源文件内容
void Show(char *ch)
{
printf("%s",ch);
}

在show.cpp源文件中定义了一个外部函数Show 用来打印传入的参数 省略了关键字extern 然后在test.cpp中调用Show函数 将字符串数组ch作为函数的实参 传入Show函数中

输出结果:

注意:在c语言中如果不指明函数的作用范围 则函数的默认为外部函数 也就是说定义外部函数的时候 可以省略extern关键字

补充一点比较简单的:局部变量和全局变量

在for if while 之类的复合语句中定义的变量 只能在定义该变量复合语句内使用  在函数内定义的变量 也只能在该函数内使用 定义全局变量的话 可以定义在main函数外

如果要定义变量的源文件外使用的话 需要将该变量用extern关键字来修饰

C语言--函数篇的更多相关文章

  1. C语言函数篇(二)函数参数基础设计

    形参实现一种数据传入的接口 ,由 实参 拷贝给 形参. 拷贝!!!!!!!!!!! 例1: void func(int tmp){ //意图是实现传进来的参数 +1 tmp++; } int mian ...

  2. C语言函数篇(五)静态库和动态库的创建和使用

    使用库函数是源码的一种保护??? <我猜的.> 库函数其实不是新鲜的东西,我们一直都在用,比如C库. 我们执行pringf() 这个函数的时候,就是调用C库的函数. 下面记录静态库和动态库 ...

  3. C语言函数篇(四)函数的设计

    1. 函数设计的时候,如果使用到全局变量,就尽量通过参数的形式传递进来 也就是说,保持 函数 跟 外部的交互 只有 参数 和 返回值 2. 在有参数的情况下,或者有数值输入的时候,要先进行错误判断. ...

  4. C语言函数篇(三)函数参数高级设计

    在内存空间中, 1. 单位大小的数据 叫 数值 . 比如 int a; char b; ... 2. 由这些单位数据组合起来的内存, 称作 空间. 比如: 各种数组char/int a[10]; 结构 ...

  5. C语言函数篇(一)函数的组成

    函数的组成: 函数名 输入参数 返回值 返回值 函数名 (输入参数){ 执行体 } 用指针保存函数: int func(int a, int b, char c){ } --> int (*fu ...

  6. 通过实战理解C语言精要——函数篇

      前言 本篇博客是对C语言函数部分的重点内容和细枝末节通过实战得到的经验的总结精炼,不涵盖C语言函数的全部内容,所有提炼内容均来自提炼与实战,阅读需要对函数部分有一定基础,可用于对C语言函数的理解提 ...

  7. 从linux0.11中起动部分代码看汇编调用c语言函数

    上一篇分析了c语言的函数调用栈情况,知道了c语言的函数调用机制后,我们来看一下,linux0.11中起动部分的代码是如何从汇编跳入c语言函数的.在LINUX 0.11中的head.s文件中会看到如下一 ...

  8. C语言扫盲篇

    C语言扫盲篇 作者:尹正杰 版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接. 一.什么是C语言 C 语言是一种通用的高级语言,最初是由 ...

  9. 嵌入式LInux之C语言提升篇---Skr Skr Up Up

    嵌入式C语言提升 致敬:每一个奋斗的人! Up Up UpC语言常见编译错误1.预处理错误 -E    1-1 找不到源文件错误         自己定义头文件 使用 “xxx.h” 搜索的目录 ./ ...

随机推荐

  1. rsync配置和同步数据

    rsync的搭建配置1.环境和配置文件 rsyncd.conf(主配置文件) rsyncd.secrets(密码文件) pc1:192.168.0.1,rsync的服务器,配置rsyncd.conf文 ...

  2. JDBC 学习笔记(二)—— 详解 JDBC 的四种驱动类型

    JDBC 有四种驱动类型,分别是: JDBC-ODBC 桥(JDBC-ODBC bridge driver plus ODBC driver) 本地 API 驱动(Native-API partly ...

  3. 【Luogu】P3768简单的数学题(杜教筛)

    题目链接 emm标题全称应该叫“莫比乌斯反演求出可狄利克雷卷积的公式然后卷积之后搞杜教筛” 然后成功地困扰了我两天qwq 我们从最基本的题意开始,一步步往下推 首先题面给出的公式是$\sum\limi ...

  4. BZOJ1189 [HNOI2007]紧急疏散evacuate 【二分 + 网络流】

    题目 发生了火警,所有人员需要紧急疏散!假设每个房间是一个N M的矩形区域.每个格子如果是'.',那么表示这是一 块空地:如果是'X',那么表示这是一面墙,如果是'D',那么表示这是一扇门,人们可以从 ...

  5. mybatis学习(六)——参数处理

    先总结一下,后面再一个个解释: 单个参数:直接使用#{参数名}进行取值,mybatis没做特殊处理,参数名可以随便写. 多个参数:使用#{param1},#{param2}取值 命名参数:通过@par ...

  6. 如何在Windows上卸载DB2

    怎么在Windows下正确卸载DB2: http://www.360doc.com/content/11/1117/16/7485728_165237689.shtml ↑↑↑ 上面的文章挺复杂,我没 ...

  7. 洛谷 P3391 模板Splay

    #include<bits/stdc++.h> using namespace std; #define maxn 200000 int read() { ,w=; ;ch=getchar ...

  8. bzoj 3544 [ONTAK2010]Creative Accounting 贪心

    Description 给定一个长度为N的数组a和M,求一个区间[l,r],使得(\sum_{i=l}^{r}{a_i}) mod M的值最大,求出这个值,注意这里的mod是数学上的mod Input ...

  9. APM-应用性能管理

    APM(应用性能管理) 在信息科学和系统控制领域,APM致力于监控和管理应用软件性能和可用性.通过监测和诊断复杂应用程序的性能问题,来保证软件应用程序的良好运行(预期的服务),APM已经商用 基本定义 ...

  10. R语言实战读书笔记(十三)广义线性模型

    # 婚外情数据集 data(Affairs, package = "AER") summary(Affairs) table(Affairs$affairs) # 用二值变量,是或 ...