zoukankan      html  css  js  c++  java
  • C语言函数篇

     

    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函数的形参的简单了解

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

     运行结果:

    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 返回值类型 函数名 (参数列表)

    代码练习:

     1 //test.cpp 源文件内容 
     2 #include<stdio.h>
     3 #include"show.cpp"
     4 int main ()
     5 {
     6     char ch[10];
     7     gets(ch);
     8     Show(ch);
     9     return 0;
    10  } 
    1 //show.cpp 源文件内容
    2 void Show(char *ch)
    3 {
    4     printf("%s",ch);
    5  } 

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

    输出结果:

     

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

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

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

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

  • 相关阅读:
    async函数
    Generator生成器
    ES6中的迭代器iterator
    Java多线程系列---“JUC锁”06之 公平锁(下)
    Java多线程系列---“JUC锁”05之 公平锁(上)
    Java多线程系列---“基础篇”14之 wait,sleep,join,yield,park,unpark,notify等通信机制对比
    Java多线程系列---“JUC锁”04之 LockSupport
    Java多线程系列---“JUC锁”03之 Condition
    Java多线程系列---“JUC锁”02之 ReentrantLock
    Java多线程系列---“JUC锁”01之 框架
  • 原文地址:https://www.cnblogs.com/dire/p/5051838.html
Copyright © 2011-2022 走看看