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,它的解释方式变了。

    小结:

  • 相关阅读:
    (转)Shell中read的用法详解
    How to install OpenResty
    MYSQL随机抽取查询 MySQL Order By Rand()效率问题
    NGINX、PHP-FPM开机自动启动
    Nginx和PHP-FPM的启动/重启脚本 [转发]
    绕过 <?PHP exit('Access Denied'); ?> 限制
    OpenResty(Nginx)+Lua+GraphicsMagick实现缩略图功能
    ImageMagick资料
    MySQL5.5 RPM安装的默认安装路径
    PHP编译支持mysqli
  • 原文地址:https://www.cnblogs.com/wanmeishenghuo/p/9557639.html
Copyright © 2011-2022 走看看