首页 > 其他分享 >c语言-关键字static

c语言-关键字static

时间:2023-09-22 17:38:46浏览次数:38  
标签:文件 语言 静态 局部变量 关键字 static 全局变量 函数

局部变量:运行周期=函数的运行周期

全局变量:运行周期=整个程序的运行周期(程序可以是多个.c文件组成)

static可以修饰:1、局部变量(函数内定义的) 2、全局变量(函数外定义的)  3、函数

1.修饰局部变量->静态局部变量:

  • 开辟存储空间。在编译的过程中,会在数据区为该变量开辟空间,
  • 并对其进行初始化,如果代码中未对其进行初始化,则系统默认初始化为0。
  • 变量超出函数的生存期,可被多个函数引用,但不能改变

2.修饰全局变量->静态全局变量:

  • 全局变量定义在函数体外部,在全局数据区分配存储空间,且编译器会自动对其初始化。
  • 普通全局变量对整个工程可见,其他文件可以使用extern外部声明后直接使用。也就是说其他文件不能再定义一个与其相同名字的变量了(否则编译器会认为它们是同一个变量)。
  • 静态全局变量仅对当前文件可见,其他文件不可访问,其他文件可以定义与其同名的变量,两者互不影响。

3.修饰函数->静态函数:

  • 普通函数可以在另一个文件中直接引用,甚至不必使用extern声明,(比全局变量更随意)
  • 变成静态函数后,静态函数只能在声明它的文件中可见,其他文件不能引用该函数不同的文件可以使用相同名字的静态函数,互不影响

使用范围:函数--->文件--->程序 

static把全局函数和全局变量,缩小使用范围到单个文件范围内,把局部变量从函数范围升级到文件范围

标签:文件,语言,静态,局部变量,关键字,static,全局变量,函数
From: https://www.cnblogs.com/lvnong/p/17722858.html

相关文章

  • C++ | 关键字 explicit
    假如有一个类如下:classpoint{public:intx,y;Point(int_x=0,int_y=0){x=_x,y=_y;}};如果以下面两种方式初始化该类的对象:voiddisplayPoint(constpoint&p){printf("(%d,%d)\n",p.x,p.y);}voidmain(){displayPoint(......
  • c语言 qsort函数的使用
    #include<iostream>#include<stdio.h>voidprinfArray(int*nums,intsize){for(inti=0;i<size;i++){printf("%d",nums[i]);}printf("\n");}intcompare(voidconst*a,voidconst*......
  • 七天学会C语言-第六天(指针)
    1.指针变量与普通变量指针变量与普通变量是C语言中的两种不同类型的变量,它们有一些重要的区别和联系。普通变量是一种存储数据的容器,可以直接存储和访问数据的值。:intnum=10;//定义一个整数型普通变量num,赋值为10在例子中,变量num是一个普通整数变量,它直接存储了值10。指针变......
  • 学习C语言的第八天
    今天没有学新内容,把前两天的代码又回味了下,发现有几个还是算不上理解,只能说是背住了,不知道有没有大佬会看到我写的东西,如果看到了,能不能告诉我一下,像一些不容易理解的代码,我背住它有用吗?写一个代码让电脑关机#include<windows.h>#include<stdio.h>#include<string.h>intmain()......
  • java语言基础--对象内存图解
    在JVM内存里面主要分布有以下三个区域:栈:存放基础数据和自定义对象的引用堆:主要存储创建的对象,即new出来的对象。方法区:加载存放class文件(字节码文件)创建一个对象: 通过上图来看,程序是这样执行的:将StudentTest01.class文件加载到方法区将Student.class文件加载到方法区......
  • 4.7 Java this关键字详解(3种用法)
    this关键字是 Java 常用的关键字,可用于任何实例方法内指向当前对象,也可指向对其调用当前方法的对象,或者在需要当前类型对象引用时使用。下面我们根据示例分别讲解this关键字的作用。this.属性名大部分时候,普通方法访问其他方法、成员变量时无须使用this前缀,但如果方法里......
  • C语言中整形的大小端存储
    (C语言中整形的大小端存储)1.案例引入众所周知,在IDEVisualstudio中,调试后可以在内存窗口中看见程序中一些变量的地址以及值我们这里将一个16进制数字0x12345678存到内存中intmain(){ inta=0x12345678; return0;}按下F10后进入调试,打开内存窗口,找到变量a的地址,......
  • C语言-数据结构之顺序表
    #include<stdio.h>#defineN128typedefintdata_type;typedefstruct{ data_typedata[N]; intlast;}sqlist;sqlist*list_create();intlist_show(sqlist*L);intlist_clear(sqlist*L);intlist_destory(sqlist*L);intlist_empty(sqlist*L......
  • 拓端tecdat|R语言贝叶斯非参数模型:密度估计、非参数化随机效应meta分析心肌梗死数据|
    原文链接:http://tecdat.cn/?p=23785原文出处:拓端数据部落公众号最近我们被客户要求撰写关于贝叶斯非参数模型的研究报告,包括一些图形和统计输出。概述最近,我们使用贝叶斯非参数(BNP)混合模型进行马尔科夫链蒙特卡洛(MCMC)推断。在这篇文章中,我们通过展示如何使用具有不同内核的非......
  • 萌新学习C语言记录
    今天在牛客网上写了几道题有一个题是把几个十位数字放到一个集合中一开始用char%c发现只能输出十位数字,个位数字被吞掉了之后又用了int%d发现成功把几个十位数字放到一个集合中这可能就是新手常犯的错误了吧......