static、const、extern等关键字
- static
参考:https://blog.csdn.net/guotianqing/article/details/79828100
http://c.biancheng.net/view/2227.html
static变量存在全局数据区,定义时若未赋值,会自动初始化为0。
1)静态局部变量
static修饰局部变量时,作用域为定义它的函数内。
函数返回后,静态局部变量值不变。
#include<stdio.h>
void fun()
{
static i=;
i++;
printf("i = %d\n",i);
} void main()
{
fun();
fun();
}
运行结果:
i =
i =
2)静态全局变量
静态全局变量的作用域在本文件内,其他文件不能访问。所以其他文件可以定义同名变量
3)类的静态成员
①静态成员变量
静态成员变量在初始化时分配内存空间,所以不能再类内部定义。初始化时不能加static
静态成员变量不属于任何对象,属于整个类,可直接用类进行操作。
②静态成员函数
静态成员函数不属于任何对象(因此没有this指针),属于整个类,可直接用类进行操作。
非普通成员函数可以任意地访问静态成员函数和静态数据成员。
静态成员函数没有 this指针,不知道指向哪个对象,无法访问对象的成员变量,也就是说静态成员函数不能访问普通成员变量,只能访问静态成员变量。
- const
const int b; b = 10;/*b的值被赋值为10后,不能被改变*/
const int *ptr; /*ptr为指向整型常量的指针,ptr的值可以修改,但不能修改其所指向的值*/
int *const ptr;/*ptr为指向整型的常量指针,ptr的值不能修改,但可以修改其所指向的值*/
const int *const ptr;/*ptr为指向整型常量的常量指针,ptr及其指向的值都不能修改*/
class Point
{
int xVal, yVal;
public:
int GetY() const;
}
int Point::GetY() const //实现时也必须一样的方式,后面加const
{
return yVal;
}
static、const、extern等关键字的更多相关文章
- static,const,extern,以及全局常量
1:全局常量的定义:1:创建Header头文件,再创建与Header头文件类名相同的空文件作为.m文件,.h文件引用文件,.m文件负责定义常量 #import <UIKit/UIKit.h> ...
- 嵌入式C语言3.4 关键字---类型描述符auto/register/static/const/extern/volatile/
对内存资源存放位置的限定 1. auto 默认值---分配的内存都是可读可写的区域 auto int a; 区域如果出现 {} 我们认为在栈空间 2. register register int a; ...
- const extern static 终极指南
const extern static 终极指南 不管是从事哪种语言的开发工作,const extern static 这三个关键字的用法和原理都是我们必须明白的.本文将对此做出非常详细的讲解. co ...
- 15-static和extern关键字1-对函数的作用
一.extern与函数 如果一个程序中有多个源文件(.c),编译成功会生成对应的多个目标文件(.obj),这些目标文件还不能单独运行,因为这些目标文件之间可能会有关联,比如a.obj可能会调用c.ob ...
- const、static和extern的正确使用方式
我们在看一些大牛的第三方时,里面会出现很多const.static和extern,尤其是const和static,const和extern的结合使用,直接令很多小伙伴懵逼了,今天就详细讲解一下这三个关 ...
- 《OOC》笔记(1)——C语言const、static和extern的用法
<OOC>笔记(1)——C语言const.static和extern的用法 C语言中const关键字用法不少,我只喜欢两种用法.一是用于修饰函数形参,二是用于修饰全局变量和局部变量. 用c ...
- 如何正确使用const、static、extern
转自:http://www.jianshu.com/p/2fd58ed2cf55 前言 本篇文章主要介绍在开发中怎么使用const.static.extern关键字. 一.const 与宏的区别: c ...
- (转)全局变量、extern/static/const区别与联系
全局变量.extern/static/const区别与联系 编译单元(模块): 在IDE开发工具大行其道的今天,对于编译的一些概念很多人已经不再清楚了,很多程序员最怕的就是处理连接错误(LIN ...
- oc温习八:static、extern、const 的了解
参考文章:http://www.cocoachina.com/ios/20161110/18035.html 1.const 这个单词翻译成中文是“常量”的意思.在程序中我们知道“常量”的值是不能变的 ...
- 16-static和extern关键字2-对变量的作用
上一讲介绍了static和extern对函数的作用,static用来定义一个内部函数,不允许其他文件访问:extern用来定义和声明一个外部函数,允许其他文件访问.static和extern对变量也有 ...
随机推荐
- 20.Java基础_对象的构造函数
package pack1; public class Student { private String name; private int age; //构造方法 //如果没有任何构造函数,系统会自 ...
- 《从HBase offheap到Netty的内存管理》
JVM中的堆外内存(off-heap memory)与堆内内存(on-heap memory) 1. 堆内内存(on-heap memory) 1.1 什么是堆内内存 Java 虚拟机在执行Jav ...
- linux shell攻略学习笔记一 基础篇
1.#!/bin/bash shebang 可以自定义 比如 #!/bin/bash +x 就会打印出执行日志 linux中 \ 代表null \n2\n3” 会转义其中的\n,生成3行数据 $! 保 ...
- C++ 数组遍历的两种方式
C++ 数组遍历的两种方式: #include <iostream> using namespace std; int main() { // 一维数组 ] = {, , , , }; / ...
- [NewLife.XCode]分表分库(百亿级大数据存储)
NewLife.XCode是一个有15年历史的开源数据中间件,支持netcore/net45/net40,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量 ...
- Mac 电脑无法登陆 账号了
版本:10.14.2 每次输入用户名和密码都没有反应: 进入 命令行执行: defaults delete com.apple.appstore.commerce Storefront 然后重启机器, ...
- C++ 静态库与动态库以及在 Windows上 的创建、使用
一.什么是库 库是写好的现有的,成熟的,可以复用的代码.现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常. 本质上来说库是一种可执行代码的二进制形式,可以 ...
- liunx下安装mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz
1.解压准备一个赶紧的环境,然后安装mysql. 2.cd到/usr/local/目录下,修改文件名为mysql 修改完目录名以后我们cd到mysql下,建立一个data目录命令:cd mysql/ ...
- SiftingAppender logback 动态 输出 日志 到指定日志文件
SiftingAppender https://www.mkyong.com/logging/logback-different-log-file-for-each-thread/
- 在 EF Core 中 Book 实体在新增、修改、删除时,给 LastUpdated 字段赋值。
直接贴代码: public class MenusContext : DbContext { public static class ColumnNames { public const string ...