当前位置: 首页 > news >正文

新楼盘网站模板建设公积金网站

新楼盘网站模板,建设公积金网站,wordpress英文企业网站模板,seo快速排名软件网站C语言中static关键字用法 2021年7月28日席锦 static关键字在c语言中比较常用,使用恰当能够大大提高程序的模块化特性,有利于扩展和维护。但是对于c语言初学者,static由于使用灵活,并不容易掌握。 变量 1.局部变量 普通局部变量是再…

C语言中static关键字用法

2021年7月28日·席锦

static关键字在c语言中比较常用,使用恰当能够大大提高程序的模块化特性,有利于扩展和维护。但是对于c语言初学者,static由于使用灵活,并不容易掌握。

变量

1.局部变量

普通局部变量是再熟悉不过的变量了,在任何一个函数内部定义的变量(不加static修饰符)都属于这个范畴。编译器一般不对普通局部变量进行初始化,也就是说它的值在初始时是不确定的,除非对其显式赋值。

静态局部变量使用static修饰符定义,即使在声明时未赋初值,编译器也会把它初始化为0。

实例程序:

#include <stdio.h>int main(void)
{int a, b;static int c, d;_asm int 3        // 中断,在调试模式下查看a,b,c,d的值。可以看到a,b的值与c,d的值不同printf("%d, %d", c, d);        // 不加这一句无法在中断时查看到c,d的值。注意a,b未初始化不能使用return 0;
}

F5调试信息:

普通局部变量存储于进程栈空间,使用完毕会立即释放。

静态局部变量存储于进程的全局数据区,即使函数返回,它的值也会保持不变;但是其作用域为局部作用域,当定义它的函数结束时,其作用域随之结束。

实例程序:

#include <stdio.h>
void fun(void)
{int n_1 = 10;printf("n=%d\n", n_1);n_1++;printf("n++=%d\n", n_1);
}
void fun_static(void)
{static int n_2 = 10;printf("static n=%d\n", n_2);n_2++;printf("n++=%d\n", n_2);
}
int main(void)
{// 普通局部变量,使用完毕会立即释放fun();printf("\n");fun();printf("--------------------\n");// 静态局部变量即使函数返回,它的值也会保持不变fun_static();printf("\n");fun_static();//printf("static n=%d\n", n_2);    // 打开本行语句编译就无法通过,因为变量n_2的作用域仅在fun_static()函数内return 0;
}

运行截图:

2.全局变量

全局变量定义在函数体外部,在全局数据区分配存储空间,且编译器会自动对其初始化。

普通全局变量对整个工程可见,其他文件可以使用extern外部声明后直接使用。也就是说其他文件不能再定义一个与其相同名字的变量了(否则编译器会认为它们是同一个变量)。

静态全局变量仅对当前文件可见,其他文件不可访问,其他文件可以定义与其同名的变量,两者互不影响。

在定义不需要与其他文件共享的全局变量时,加上static关键字能够有效地降低程序模块之间的耦合,避免不同文件同名变量的冲突,且不会误使用。

实例程序:

/* demo.h */
#include <stdio.h>/* demo.c */
#include "demo.h"static int itest;        // 在demo2.c中也有一个一模一样的定义,但是程序编译运行正常
extern int itest2;        // 若是去掉extern将编译失败int main(void)
{printf("hello world.\n");return 0;
}/* demo2.c */
#include "demo.h"static int itest;
int itest2;

运行截图:

函数

函数的使用方式与全局变量类似,在函数的返回类型前加上static,就是静态函数。其特性如下:

1)静态函数只能在声明或定义它的文件中可见,其他文件不能引用该函数

2)不同的文件可以使用相同名字的静态函数,互不影响

非静态函数可以在另一个文件中直接引用,甚至不必使用extern声明

实例程序:

/* demo.h */
#include <stdio.h>
static void fun1(void);
static void fun2(void);
void callFun2(void);/* demo.c */
#include "demo.h"static void fun1(void)
{printf("hello from demo fun1.\n");
}int main(void)
{fun1();    // 静态函数,定义在本文件中,可以直接调用//fun2();    // 打开注释,将无法编译通过。原因:函数fun2()是静态函数,且不在本文件中声明或定义callFun2();    // 非静态函数可以在另一个文件中直接引用return 0;
}/* demo2.c */
#include "demo.h"
static void fun2(void)
{printf("hello from demo fun2.\n");
}void callFun2(void)
{fun2();    // 静态函数,定义在本文件中,可以直接调用
}

运行截图:

http://www.yayakq.cn/news/205557/

相关文章:

  • 网站开发vs2013沈阳男科医院哪家医院好
  • 福建住房和城乡建设网站证书查询从零开始创建wordpress主题.pdf
  • 淘客网站怎么做 知乎专业的单位网站开发开发
  • 菏泽哪里有做网站的php网站开发培训班
  • 超市网站建设策划书wordpress4.8.3安装
  • 广西公路建设协会网站湖南中维电力建设有限公司网站
  • 做网站需要哪些栏目四大门户网站创始人
  • 做网站一个月赚多少厦门中小企业网站制作
  • 福州做网站企业企业网站推广注意事项
  • 房地产怎么做网站推广代理网络阅卷
  • 镇江还有什么网站吗wordpress程序备份
  • 东莞网站建设网站建设多少钱如何给网站2做推广
  • 网站建设的重要指标项目建设方案包括哪些内容
  • 网站建设数据库放哪简述网站建设步骤
  • 企业网站加视频wordpress营销模板
  • 准备网站的工作深圳市住房和建设局网站住房保障服务
  • 网站建设互联网推广wordpress中文 手机版
  • 信息推广网站点不开的那种怎么做大连金普新区规划建设局网站
  • 襄阳微网站建设北美跨境电商平台有哪些
  • 个人网站转企业网站建设公司止一se0
  • 怎么用flash做视频网站汕头网站排名推广
  • 网站地图 用户体验近期国际新闻热点大事件
  • 公司网站建设团队个人网站可以备案几个
  • 网站内容编辑工具中国工业信息网
  • 网站建设公司做ppt吗长春网站建设同信
  • 微信做单子的网站源码白山北京网站建设
  • 重庆做手机网站建设南京专业网站设计公司价格
  • 0基础网站搭建教程百度网站排名哪家好
  • 郑州大型网站制作附近展览制作工厂
  • 谷歌做新媒体运营的网站深圳夜场网站建设托管