zoukankan      html  css  js  c++  java
  • 第43课 函数的意义

    函数的由来:

    模块化程序设计:

    C语言中的模块化:

    面向过程的程序设计:

    函数的声明和定义:

    声明和定义是不同的。示例如下:

     1 #include <stdio.h>
     2 #include <malloc.h>
     3 
     4 extern int g_var;
     5 
     6 extern struct Test;
     7 
     8 int main()
     9 {
    10     extern void f(int i, int j);
    11     extern int g(int x);
    12     
    13     struct Test* p = NULL; // (struct Test*)malloc(sizeof(struct Test));
    14     
    15     printf("p = %p
    ", p);
    16     
    17     //g_var = 10;
    18     
    19     printf("g_var = %d
    ", g_var);
    20     
    21     f(1, 2);
    22     
    23     printf("g(3) = %d
    ", g(3));
    24     
    25     free(p);
    26     
    27     return 0;
    28 }

    global.c如下:

     1 #include <stdio.h>
     2 
     3 int g_var = 10;
     4 
     5 struct Test
     6 {
     7     int x;
     8     int y;
     9 };
    10 
    11 void f(int i, int j)
    12 {
    13     printf("i + j = %d
    ", i + j);
    14 }
    15 
    16 int g(int x)
    17 {
    18     return (int)(2 * x + g_var);
    19 }

    第4行说明g_var在其它文件中定义,在这里不会再分配存储空间。第6行声明有struct  Test这样一个结构体(并不是声明变量),这里是告诉编译器在后续的编译过程中如果看到了struct Test不要意外,不要报错,但是也只能定义这个结构体的指针。例如,第13行,因为我们在这个文件中不能得到这个结构体的大小。

    运行结果如下:

    我们将global.c中第三行的g_var的声明改成float类型,再次编译运行,如下:

    可以看到g_var变成了一个很大的值,因为从float到int,它的解释方式变了。

    小结:

  • 相关阅读:
    Spark高级数据分析· 2数据分析
    rtsp 学习
    vs code 体验
    RTP 学习
    libev 学习使用
    TS 数据流分析学习
    linux 编程
    times、 time、clock函数说明
    gcc 学习
    2010912 双模机顶盒学习记录
  • 原文地址:https://www.cnblogs.com/wanmeishenghuo/p/9557639.html
Copyright © 2011-2022 走看看