centos7环境下mysql5.7的安装与配置

citru 管理员 楼主
1
2018-07-22 18:42

被static修饰的函数可认为是“局部函数”,只能被本源码文件访问。而没有static关键字的函数可认为是全局函数(可在函数前写上extern,此关键字是默认的,所以可不写),可跨文件被访问。static修饰的变量可类推,当在一个函数内部使用static修饰变量时,此变量保存的静态存储区,不因函数退出而销毁,只是只能在此函数中访问到而已。举例如下:


function.h文件

#pragma once
static int StaticFun( int a, int b );
int ExternFun( int a, int b );
extern int externNum;

function.c文件

#include "function.h"
static int staticNum = 11; //只能在本文件中使用
int externNum = 1; //本文件及外部文件均可使用
//只能在本文件中使用
static int StaticFun( int a, int b )
{
    return a + b;
}   
//函数默认是extern的,此函数在本文件中及外部文件中均可使用
int ExternFun( int a, int b )
{
    int sum = StaticFun( a, b ) + 10; //同一个文件中可以访问static声明的函数
    return sum;
}

main.c文件

#include <stdio.h>
#include "function.h"
int main( int argc, char** argv )
{
    int aa = 0, bb = 0;
    //aa = StaticFun( 10, 11 ); //不能访问,编译不能通过,函数是static类型的
    bb = ExternFun( 20, 20 );
    printf( "aa=%d, bb=%d\n", aa, bb );
    printf( "externNum=%d\n", externNum );
    //printf( "staticNum=%d\n", staticNum ); //不能访问,编译不能通过,是static的变量
    return 0;
}


最新回复 ( 0 )