C语言中static关键字的作用
在C语言中static的作用如下
第一、在修饰变量的时候,static修饰的静态局部变量只执行一次,而且延长了局部变量的生命周期,直到程序运行结束以后才释放。
第二、static修饰全局变量的时候,这个全局变量只能在本文件中访问,不能在其它文件中访问,即便是extern外部声明也不可以。
第三、static修饰一个函数,则这个函数的只能在本文件中调用,不能被其他文件调用。Static修饰的局部变量存放在全局数据区的静态变量区。初始化的时候自动初始化为0;
(1)不想被释放的时候,可以使用static修饰。比如修饰函数中存放在栈空间的数组。如果不想让这个数组在函数调用结束释放可以使用static修饰
(2)考虑到数据安全性(当程想要使用全局变量的时候应该先考虑使用static)
在C++中static关键字除了具有C中的作用还有在类中的使用
在类中,static可以用来修饰静态数据成员和静态成员方法
静态数据成员
(1)静态数据成员可以实现多个对象之间的数据共享,它是类的所有对象的共享成员,它在内存中只占一份空间,如果改变它的值,则各对象中这个数据成员的值都被改变。
(2)静态数据成员是在程序开始运行时被分配空间,到程序结束之后才释放,只要类中指定了静态数据成员,即使不定义对象,也会为静态数据成员分配空间。
(3)静态数据成员可以被初始化,但是只能在类体外进行初始化,若为对静态数据成员赋初值,则编译器会自动为其初始化为0
(4)静态数据成员既可以通过对象名引用,也可以通过类名引用。
静态成员函数
(1)静态成员函数和静态数据成员一样,他们都属于类的静态成员,而不是对象成员。
(2)非静态成员函数有this指针,而静态成员函数没有this指针。
(3)静态成员函数主要用来方位静态数据成员而不能访问非静态成员。
转载于:https://blog.csdn.net/newcong0123/article/details/52725595
转载于:https://www.cnblogs.com/curo0119/p/8645801.html
C语言中static关键字的作用相关推荐
- C语言中static关键字的作用详解,全网最透彻
在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条. (1)先来介绍它的第一条也是最重要的一条:隐藏. 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有 ...
- 【✊基础不牢,地动山摇のC语言中static关键字✊】
C语言中static关键字 用static声明限定外部变量与函数,可以将其后声明的对象的作用域限定为被编译源文件的剩余部分.要降对象指定为静态存储,可以在正常的声明之前加上关键字static作为前缀. ...
- C语言中static关键字和break/continue在for/while循环中的作用
前言 此篇博客对C语言的基础知识稍加总结,包括C语言中的static关键字作用,三大循环语句中出现的break和continue对循环体的影响,常量,生命周期,作用域,字符串,转义字符等等,其中常见的 ...
- C语言中static关键字详解
C语言中staic关键字很简单,简单到你的任何一个项目中可以不写一个staic关键字也是没有问题的.写这篇章主要是一下自己的staic的理解和应用,当然在章开头依旧要照本宣科简述一下static关键字 ...
- char* 赋值 const char* 释放_C/C++编程笔记:C语言中 const 关键字的作用及解析,值得收藏!...
有时候我们希望定义这样一种变量,它的值不能被改变,在整个作用域中都保持固定.例如,用一个变量来表示班级的最大人数,或者表示缓冲区的大小. 为了满足这一要求,可以使用const关键字对变量加以限定: c ...
- c语言中static关键字用法详解
概述 static关键字在c语言中比较常用,使用恰当能够大大提高程序的模块化特性,有利于扩展和维护. 但是对于c语言初学者,static由于使用灵活,并不容易掌握.本文就static在c语言中的应用进 ...
- c语言中volatile关键字的作用
读文章之前 可以先看一下<程序员的自我修养 >第28页 过度优化. volatile 提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直 ...
- C语言中voliate关键字的作用
一个变量用voliate关键字修饰,是要告诉编译器,这个变量的值随时可能发生变化,所以编译器每次都必须从变量对应的内存地址中获取该变量的值. voliate的常用方式: 当一个变量表示某寄存器的值时, ...
- C语言中const关键字的作用
1.可以定义const常量,具有不可变性.例如:const int Max=100; Max++会产生错误; 2.便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患.例如: void f( ...
最新文章
- ivew 限制输入 0 到 1 的数字 包括小数, 0 ,1
- JavaFX——fxml文件加载错误:[javafx.fxml.LoadException]解决方案之一
- Coolite Toolkit学习笔记系列文章
- struct and union
- termux配置python安装kali_安卓安装kali linux之Termux
- window 如何查看tomcat 实时日志_如何处理生产环境Tomcat的catalina.out日志?
- mysql text 查询速度_数据库学习之让索引加快查询速度(四)
- c语言全局变量默认值
- 【渝粤教育】国家开放大学2018年春季 7067-22T康复护理学 参考试题
- sql studio索引超出了数组界限
- 低俗文章之傻傻分不清楚的IC和ID卡(手稿)
- Win7梦幻桌面字体有问题怎么办
- mac安装教程 sqlyog_Mac开发环境配置:Homebrew的安装
- 大文件上传插件webupload插件
- 三星 galaxy s7 启用开发者模式
- 怎么监控mysql数据变化_mysql数据库数据变化实时监控
- 利用子集构造法实现NFA到DFA的转换
- css3 滤镜效果(黑白滤镜、模糊化处理等)
- 全局函数的名字应当使用“动词”或者“动词+名词”(动宾词组)
- FreeCodeCamp学习--Slasher Flick
热门文章
- 安装Linux时,引导分区位于一个GPT分区方案的错误提示
- 设计模式18---设计模式之策略模式(Strategy)(行为型)
- 校招真题练习011 种花(美团)
- 如何让你的操作系统更安全二
- 基于vue的移动web app页面缓存解决方案
- 《机器人学经典教程》——2.3 人工智能
- 什么是Nib文件?(Nib文件是一种特殊类型的资源文件,它用于保存iPhone OS或Mac OS X应用程序的用户接口)...
- Zabbix配置详解
- 第21章:MongoDB-聚合操作--聚合管道--$geoNear
- 集合嵌套存储和遍历元素的示例