900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > C语言static和extern关键字

C语言static和extern关键字

时间:2023-07-24 16:19:16

相关推荐

C语言static和extern关键字

1.static

static修饰的变量,自始至终只有一块空间,当前文件才能使用,生命周期是从定义开始直到程序结束;全局变量的定义是在.c文件中,但是声明全局变量是在.h中;static:静态型,用它定义的变量自动初始化为0值或空值,常用于修饰变量或函数,只能在当前".c"文件中使用,static类型的变量只用一块空间,并且此变量的值有继承性;

practice.h头文件//防止此practice.h头文件被很多文件调用使得重复包含#ifndef _PRACTICE_H#define _PRACTICE_Hvoid call_func();#endif // !_PRACTICE_H

main.c#include <stdio.h>#include "practice.h"static int i = 10; //static定义变量,只能在当前 main.c 文件中使用int main (){printf("[%s]i = %d\n",__FUNCTION__,i); //__FUNCTION__代表是在哪个函数call_func(); //直接调用接口去调内部的func函数return 0;}

practice.c源文件#include <stdio.h>//static把func函数隐藏起来,封装一层static void func (){int i = 2;printf("[%s]i = %d\n", __FUNCTION__, i);}void call_func(){func();}

result:

2.extern

extern不能改变被引用的变量的值和类型,是说明型不是定义用的;

practice.h头文件//防止此practice.h头文件被很多文件调用使得重复包含#ifndef _PRACTICE_H#define _PRACTICE_Hvoid func();#endif // !_PRACTICE_H

main.c#include <stdio.h>#include "practice.h" //自定义的头文件用""int i = 10; //定义一个全局变量i,其他文件也可以引用//程序先进入main主函数,在main里往下调用其他文件或本文件中的功能函数int main (){printf("[%s]i = %d\n",__FUNCTION__,i); //__FUNCTION__代表是在哪个函数func(); //调用func()是在其他文件中的函数,要在头文件中包含一下return 0;}

practice.c源文件:放源功能函数的定义#include <stdio.h>//函数func本身的定义写在本.c文件中void func (){//extern不能改变被引用的变量'i'的值和类型extern int i; //说明变量i是外部引用的printf("[%s]i = %d\n", __FUNCTION__, i);}

result:

函数头文件的声明前加extern与不加extern有什么区别

函数默认是extern属性,声明时加不加extern没区别,C语言中,extern修饰符用在变量或函数声明前,说明此变量或函数是在别处定义的,要在此引用;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。