zoukankan      html  css  js  c++  java
  • 第43课

    第43课 - 函数的意义

    1. C语言中的函数

    追溯一下C语言发展的历史,我们知道C语言在早期是用在科学计算上的,而科学计算就是使用各种算法处理数据

    在C语言中就是使用函数实现算法。

     

    2. 函数的意义

    (1)模块化程序设计

          

    (2)C语言中的模块化   ==>  使用函数完成模块化编程

         

    3. 面向过程的程序设计

    (1)面向过程是一种以过程(过程即解决问题的过程)为中心的编程思想。首先将复杂的问题分解为一个个容易解决的问题,分解过后的问题可以按照步骤一步步完成。

    (2)函数是面向过程在C语言中的体现,解决问题的每个步骤可以用函数来实现。

    4. 声明和定义

    (1)声明的意义在于告诉编译器程序单元的存在

    (2)定义则明确指示程序单元的意义

    (3)C语言中通过 extern 进行程序单元的声明

    (4)一些程序单元在声明时可以省略extern,比如声明结构体的类型,extern struct Test  <==> struct test

    【声明和定义不同】

    // global.c

     1 #include <stdio.h>
     2 
     3 int g_var = 10;
     4 // float g_var = 10;
     5 
     6 struct Test
     7 {
     8     int x;
     9     int y;
    10 };
    11 
    12 void f(int i,int j)
    13 {
    14     printf("i + j = %d
    ",i + j);
    15 }
    16 
    17 int g(int x)
    18 {
    19     return (int)( 2 * x + g_var);   // 在编译该文件时,g_var以float型处理
    20 }

    // 43-1.c

     1 #include <stdio.h>
     2 #include <malloc.h>
     3 
     4 // 声明,告诉编译器g_var在外部的文件中
     5 extern int g_var;
     6 // extern float g_var;
     7 
     8 
     9 struct Test;  // extern struct Test;  extern可以省略
    10 
    11 int main()
    12 {
    13     // 声明两个函数
    14     extern void f(int,int);
    15     extern int g(int);
    16 
    17     struct Test* p = NULL; // 可以这样定义指针,,但是不能定义该结构体对用的变量
    18 
    19     // struct Test* p = (struct Test*)malloc(sizeof(struct Test));  // error,因为在编译该文件时不知道struct Test的具体成员,也就不知道它的大小
    20 
    21     printf("p = %p
    ", p);
    22 
    23     //g_var = 10;
    24 
    25     printf("g_var = %d
    ", g_var);  // 如果前面是 extern float g_varl; 这里打印垃圾值,浮点数和整型在内存中的存储方式不同
    26 
    27     f(1, 2);  // i + j = 3
    28    
    29     printf("g(3) = %d
    ",g(3));  // g(3) = 16
    30 
    31     free(p);
    32 
    33     return 0;
    34 }
  • 相关阅读:
    浅尝辄止——在C++中调用C#的回调函数——COM方式
    代码管理——如何连接Git Server,下载代码
    浅尝辄止——使用ActiveX装载WPF控件
    软件调试——CPU异常列表
    软件调试——IA-32 保护模式下寄存器一览
    Delphi面向对象编程
    看雪2017CTF第二题解法
    串操作指令
    MASM 重复汇编
    MASM 宏结构
  • 原文地址:https://www.cnblogs.com/shiwenjie/p/11854060.html
Copyright © 2011-2022 走看看