static 关键字.

1、static修饰局部变量;

① 整个生命周期延长,
② 静态局部变量只会被初始化一次,以后每一次调用静态局部变量,就会使用上一次调用完保存的值。
③ 只能被作用域的变量和函数访问,虽然存在于程序的整个生命周期,但不能被其他函数、文件访问。

//没有static修饰变量
#include<stdio.h>
#include<windows.h>
int func(int c){int a = 0;int b = 3;//修饰int sum;a++;b++;sum =a + b + c;return sum;
}
int main()
{int c = 1;for (int i = 1; i <= 4;i++){printf("%d\n",func(c));}system("pause");return 0;
}
//输出结果为6
6
6
6
请按任意键继续. . .
static修饰变量;#include<stdio.h>
#include<windows.h>
int func(int c){int a = 0;static int b = 3;int sum;a++;b++;sum =a + b + c;return sum;
}
int main()
{int c = 1;for (int i = 1; i <= 4;i++){printf("%d\n",func(c));}system("pause");return 0;
}
//输出结果为:
6
7
8
9
请按任意键继续. . .·

2、static修饰全局变量

全局变量被static修饰,静态全局变量只能在其定义的源文件使用,在同项目的源文件内不可见。

//test1.c源文件
#include<stdio.h>
#include<windows.h>
int a = 1;
//我们在test1.c文件文件中定义一个整型变量,在test2c中使用//test2源文件
#include<stdio.h>
#include<windows.h>
int main(){extern int a;printf("%d\n",a);system("pause");return 0;
}
//运行结果为
1
请按任意键继续. . .//运行就会报搓

普通的全局变量对整个工程可见,其他文件可以使用extern外部声明后直接使用

下面对上述例子中的变量使用static修饰

//test1.c文件
#include<stdio.h>
#include<windows.h>
static int a = 1;//test2.c文件
#include<stdio.h>
#include<windows.h>
int main(){extern int a;printf("%d\n",a);system("pause");return 0;
//运行结果会报错
//1>LINK : fatal error LNK1168: 无法打开 D:\c 语言\VS //code\static\Debug\static.exe 进行写入========== 生成:  成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

3、static 修饰函数

static修饰函数,该函数对本源文件之外的其他源文件是不可见,当函数不希望被外界所看见就用static修饰这个函数。

//test1.c文件
#include <stdio.h>
#include<windows.h>
void fun(void)
{printf("hello\n");system("pause");
}//test2.c文件
#include <stdio.h>
#include<windows.h>
int main(void)
{fun();system("pause");return 0;
}
//运行结果为:
hello
请按任意键继续. . .

没用static修饰函数,函数是可以被其他文件调用的
下面我们用static对上面的例子中的函数进行修饰

//test1.c文件
#include <stdio.h>
#include<windows.h>static void fun(void)
{printf("hello\n");system("pause");
}//test2.c文件
#include <stdio.h>
#include<windows.h>
int main(void)
{fun();system("pause");return 0;
}
//运行就会报错
//1>D:\c 语言\VS code\static\Debug\static.exe : fatal error LNK1120: 1 个无法解析的外部命令
//此时的fun()函数只能在test1.c文件内使用,test2.c是看不见test1.c文件内的fun()函数

c语言static关键字参数相关推荐

  1. [C语言]static关键字--#define 定义常量和宏--初识指针--初识C语言(四)

    文章目录 前言 一,static关键字 二,#define 定义常量和宏 三,初识指针 总结 前言 本节主要记录初识C语言第四节内容. 内容包括:static关键字------#define 定义常量 ...

  2. C语言static关键字修饰变量及函数时的用法和原理

    目录 一.static关键字修饰局部变量 二.static关键字修饰全局变量 三.static关键字修饰函数 一.static关键字修饰局部变量 在内存中,往往将其分为三个区块,栈区,堆区,静态区.C ...

  3. C语言学习及应用笔记之二:C语言static关键字及其使用

    C语言有很多关键字,大多关键字使用起来是很明确的,但有一些关键字却要相对复杂一些.我们这里要说明的static关键字就是如此,它的功能很强大,相应的使用也就更复杂. 一般来说static关键字的常见用 ...

  4. c语言的关键字static,C语言static关键字

    1.static 全局变量与普通全局变量的区别: 在定义变量时,全局变量之前再冠以 static 就构成了静态的全局变量.全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式.两者在存储方式 ...

  5. c语言 static 关键字的作用

    static 关键字的作用 全局静态变量 局部静态变量 静态函数 类的静态成员 类的静态函数 全局静态变量 在全局变量前加上关键字 static,全局变量就定义成一个全局静态变量. 静态存储区,在整个 ...

  6. C语言static关键字的作用(有三个作用)

    1.具有隐藏的作用 当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性. a.c: char a = 'A'; // global variable void msg() ...

  7. C语言 Static关键字的作用详解

    前言: static 是用来修饰函数和变量的,可以修饰局部变量,全局变量以及函数 一.修饰局部变量  (称为静态局部变量) 来看俩段代码: 对于第一段代码来说,它循环5次,每次调用一下fun()函数, ...

  8. C语言static 关键字总结

    static 关键字总结: 变量可以被static 修饰,意义有发生变化吗? 下面我们看个例子: (1)变量不加 static 修饰 #include <stdio.h>void test ...

  9. 浅谈C语言static关键字 静态变量 函数

    目录 static对变量修饰 局部变量 全局变量 函数 static对变量修饰 局部变量 普通局部变量存储于进程栈空间,使用完毕会立即释放. 静态局部变量存储于进程的全局数据区,即使函数返回,它的值也 ...

最新文章

  1. 标定中是什么意思_机械加工中,测头有什么作用呢?
  2. 2分钟学会ajax 入门ajax必备
  3. leetcode 598. Range Addition II | 598. 范围求和 II
  4. mac 安装nvm和nvm常见的命令
  5. 更新node最新版本方法和 npm install -g n 运行错误
  6. SilverlightCMS开发之3经典三页面CMS浮现
  7. PPT 2010实现使用自定义主题付下载
  8. 初步理解NServiceBus
  9. 【Git/Github学习笔记】ubuntu系统下使用git命令与windows下的差别
  10. 拓端tecdat|使用Python中的ImageAI进行对象检测
  11. 密码学40年|重要历史与人物
  12. C语言程序设计C语言之父,C语言程序设计(C语言之父着).pdf
  13. 第十届泰迪杯数据挖掘B题:电力系统负荷预测分析--解题思路与部分代码01
  14. 由梵歌企划策划承办的方正科技总裁签售会(武汉站)圆满结束!
  15. RadASM的主题更换!
  16. vue里面实现百度地图 标记多点 地点连线
  17. [CityHunter]游戏流程设计及技术要点
  18. android 自动运行 app,「定时启动」时间一到自动运行指定的 App(Android)
  19. 透析BAT人工智能生态图谱:AI大战一触即发
  20. SpringBoot + Vue 前后端分离项目部署到服务器上

热门文章

  1. jsp中引入外部js文件发生中文乱码
  2. Java 谈谈你对面向对象的理解?
  3. 通达OA工作流主要表的数据结构
  4. 对某投票网站的刷票方式
  5. 用户行为收集到hive
  6. php导航代码在线编辑器,只需一行代码,轻松实现一个在线编辑器
  7. 【mongoDB】mongoDB的正确的连接方式
  8. 基于Java、JSP的网上招聘系统的设计和实现
  9. TeamCity+Gradle实现自动构建App安装包和补丁包
  10. stringWithFormat和stringWithString有什么区别