C++那些细节--static关键字

出现Command ‘vim‘ is available in the following places,vim: command not found等解决方法 内置命令无法识别,说明系统变量有误,导致无法识别,既然系统变量有误,将其注释或者更改为正确的即可,但是现在打不开,又怎么注释掉。替换vim来打开编辑,打开之前错误的全局变量文件,发现变量有误,要么注释要么改为。系统变量有全局变量(通过命令行printenv或者echo)和局部变量。对应通过vim修改错误的变量文件,不然source也无法让配置文件生效。本身vim是系统内置的命令,连vim都出现问题。修改为正确的即可,之后还需要重启服务器,使用。之后即可成功,通过即可查看命令是否有写入。... 阅读详情

static也是我们经常用到的关键字,关于static有很多用法,而且在面向过程和面向对象编程中,static有着不同的意义。之前总是记不住,于是,本人强迫症又发作了,一定要搞懂它!!!


一.面向过程编程中的static关键字

1.静态全局变量

静态全局变量:
// C++Test.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;

static int s_test;
int nons_test;

int _tmain(int argc, _TCHAR* argv[])
{
	
	//静态全局变量默认初始化为0
	cout<<"static :"<<s_test<<endl;
	//非静态全局变量默认初始化也是0,但如果是局部非静态变量,在VS中直接报错,不能通过编译
	cout<<"non-static: "<<nons_test<<endl;

	system("pause");
	return 0;
}

结果:
static :0
non-static: 0
请按任意键继续. . .

我们在运行程序时,内存分为代码区,全局数据区,堆区,栈区。正常的临时变量auto等都在栈区,生命周期是函数结束,而new出来的对象一般都在堆区,声明周期由我们控制,new时开始,delete时结束。而全局数据区则保存全局变量以及静态变量,他们的生命周期是整个程序的运行周期。

使用静态全局变量和使用普通全局变量的差别:
1)如果全局变量在头文件中,或者使用和定义都在同一个文件中,静态全局变量和普通全局变量是相同的。
//StaticTest.h头文件中分别定义静态全局变量和普通全局变量
static int static_num = 20;
int nonstatic_num = 30;

// C++Test.cpp : 定义控制台应用程序的入口点。
//全局变量在头文件或者本文件中两者没有什么区别

#include "stdafx.h"
#include <iostream>
#include <string>
#include "StaticTest.h"
#include "StaticTest1.h"
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
	
	//如果静态变量在头文件中或者本文件中,可以访问静态全局变量
	cout<<"static :"<<static_num<<endl;
	//如果静态变量在头文件中或者本文件中,可以访问非静态全局变量
	cout<<"non-static: "<<nonstatic_num<<endl;

	system("pause");
	return 0;
}

结果:
static :20
non-static: 30
请按任意键继续. . .


2)如果全局变量在.cpp文件中,普通全局变量是全局可见的,即其他文件也可见,但是要使用时,就要在其他文件中添加extern关键字。而且如果不添加的话,在这个文件再声明同名的变量,是会报错的。但是使用静态全局变量就可以解决这个问题,静态全局变量在其他文件中是不可见的,我们不需要关注其他文件中的全局变量,也不会出现不能使用同名全局变量的问题啦!

//.h文件
#ifndef __STATICTEST1_H_
#define __STATICTEST1_H_
#pragma once
class StaticTest1
{
public:
	StaticTest1(void);
	virtual ~StaticTest1(void);
};
#endif

//.cpp文件
#include "stdafx.h"
#include "StaticTest1.h"

//在.cpp文件中定义全局变量
static int static_test = 10;
int nonstatic_test = 20;

StaticTest1::StaticTest1(void)
{
}


StaticTest1::~StaticTest1(void)
{
}
main函数文件:
// C++Test.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include "StaticTest1.h"
using namespace std;

extern int nonstatic_test;
extern int static_test;

int _tmain(int argc, _TCHAR* argv[])
{
	
	//如果静态变量在其他.cpp文件中,不可以访问静态全局变量,即使在本文件使用extern声明也不行
	//cout<<"static :"<<static_test<<endl;
	//如果静态变量在其他.cpp文件中,可以访问非静态全局变量,但是要在本文件使用extern声明
	cout<<"non-static: "<<nonstatic_test<<endl;

	system("pause");
	return 0;
}

不添加extern时,静态全局变量为未定义,而即使添加extern声明也会报错:
C++Test2.obj : error LNK2001: 无法解析的外部符号 "int static_test" (?static_test@@3HA)
1>: fatal error LNK1120: 1 个无法解析的外部命令


关于静态全局变量,有下面三点要注意:
1)静态全局变量如果未初始化,会被默认初始化为0,而非静态全局变量,注意是全局变量,也是初值为0。(非静态非全局变量如果未初始化在VS中会直接报错的)
2)静态全局变量在全局数据区非配内存,所以变量的生存期是整个程序的运行周期。(局部静态变量的生存期也是整个程序运行周期)
3)静态全局变量在变量声明的文件是可见的,但是在其他文件中是不可见的。

关于全局变量:
如果我们将全局变量直接放在头文件中,变量会随着头文件的引入,引入到各个文件中。有时候这是我们不想看到的,所以另一种方法是将全局变量放在.cpp文件中,这样,全局变量就不会随着.h文件到处引入,不是全局可见。但是,这样这个变量仍然是全局变量,要想在另外的文件中使用这个变量,就要在这个文件中使用extern关键字声明一下。如果不声明,就会出现变量未声明的情况。如果直接在这个变量再定义一个同名的变量,就会出现冲定义的情况,这也是我们不想看到的,如果全局变量仅仅在本文件中有用,那么不如直接使用静态全局变量。


2.静态局部变量

局部变量,即存储在栈空间的变量,我们在调用函数时,变量初始化,而函数调用结束时,局部变量的生存期就结束了,进而被销毁。而有时候我们需要对两次调用函数之间的变量进行保存,最简单的想法就是使用一个全局变量,但是这个变量就已经不属于函数本身,而是全局可见,不符合局部性原理,给维护带来了不便。而静态局部变量刚好可以解决这个问题。静态局部变量存储在全局数据区,不会因函数结束而销毁,并且在其他函数看来,静态局部变量是不可见的,刚好满足了我们的需求!

下面看一个例子:

// C++Test.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>
using namespace std;


void TestFunc()
{
	//定义一个静态局部变量,但是这个变量仅仅在第一次的时候初始化,再次调用时不会再初始化
	static int static_num = 10;
	//但是普通局部变量,每次都会初始化
	int nonstatic_num = 10;
	static_num++;
	nonstatic_num++;
	cout<<"non_static: "<<nonstatic_num<<"  static :"<<static_num<<endl;
}

int _tmain(int argc, _TCHAR* argv[])
{
	//调用10次该函数
	for(int i = 0; i < 10; i++)
		TestFunc();

	system("pause");
	return 0;
}

结果:

non_static: 11  static :11
non_static: 11  static :12
non_static: 11  static :13
non_static: 11  static :14
non_static: 11  static :15
non_static: 11  static :16
non_static: 11  static :17
non_static: 11  static :18
non_static: 11  static :19
non_static: 11  static :20
请按任意键继续. . .


从上面的结果我们看出,函数被调用了10次,非静态变量每次都被初始化,因而结果没变。而静态变量却只被初始化了一次,因而每次结果都比上一次大1。


关于局部静态变量要注意的几点:

1)局部静态变量也在全局数据区分配内存,不会因为函数调用结束而销毁。

2)局部静态变量在首次调用到该变量的时候进行初始化,之后再次调用时不会再进行初始化。并且局部静态变量一般就在声明处初始化,如果未显示初始化,则默认初始化为0

3)局部静态变量的生命周期为声明时到程序结束,但是它的作用域却是局部的,仅仅在该函数内,不会破坏局部性原理。


3.静态函数

函数默认是全局可见的,而如果我们希望某个函数只在本文件中可见,那么可以将它声明为静态函数。这一点与静态全局变量差不多。
一个例子:
//StaticTest.h
#include <iostream>
using namespace std;


void NormalFuncTest();

static void StaticFuncTest();

//StaticTest.cpp
#include "stdafx.h"
#include "StaticTest.h"


void NormalFuncTest()
{
	cout<<"Normal Func!"<<endl;	
}

static void StaticFuncTest()
{
	cout<<"Static Func!"<<endl;
}

// C++Test.cpp : 定义控制台应用程序的入口点。
//main函数

#include "stdafx.h"
#include <iostream>
#include "StaticTest.h"
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
	NormalFuncTest();
	StaticFuncTest();

	system("pause");
	return 0;
}
这个例子中有两个函数,都定义在另一个文件中,一个为普通函数,另一个为static函数。编译一下,会出现如下错误:

\vs2012\vs12\vc\include\xlocnum(155): error C2129: 静态函数“void StaticFuncTest(void)”已声明但未定义

就是说,编译器只看到了.h文件中的声明,但是看不到.cpp文件中的实现。这样,static的目的就达到啦!但是,如果将函数的实现放到了.h中,那么,不管是不是静态的,都是可以使用的。


二.面向对象编程中的Static关键字

1.静态数据成员

在类中,成员也可以声明为静态数据成员,而在面向对象编程中,static关键字又有了新的功能。
先来一个例子:
// C++Test.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using namespace std;


class StaticTest
{
private:
	//此处为声明,声明一个静态成员变量
	static int count;
	int id;
public:
	StaticTest(int i): id(i)
	{
		count++;
	}

	void Show()
	{
		cout<<"ID: "<<id<<endl;
	}

	static void ShowCount()
	{
		cout<<"Count: "<<count<<endl;
	}
};

//在类外定义并初始化静态成员变量,由于定义时需要分配空间,所以不能在类声明中定义
int StaticTest::count = 0;


int _tmain(int argc, _TCHAR* argv[])
{

	StaticTest test1(1);
	StaticTest test2(2);
	test1.Show();
	test2.Show();
	StaticTest::ShowCount();

	system("pause");
	return 0;
}

结果:
ID: 1
ID: 2
Count: 2
请按任意键继续. . .

关于静态成员变量有下面几点:
1)静态成员变量在一个类中只有一份,由该类所有的对象所共享,静态数据成员只分配一次内存。而非静态成员变量则是每个对象都有一份自己的拷贝。
2)静态成员变量遵循public,private,protected的访问规则
3)静态数据成员在全局数据区分配内存,属于本类所有对象共享,但是它不属于任何一个对象,所以即使没有产生对象时也可以使用静态成员变量。
4)静态成员变量的初始化比较特殊,不能直接像普通成员变量那样在类中给初值,更不能像非成员变量那样直接初始化,静态成员变量需要在类的定义中声明,然后再类外面,用<类型><类名>::<变量名> = <值>的格式来初始化。如上面的例子中:int StaticTest::count = 0;
5)访问静态成员变量的方式也有两种,一种是与普通成员变量的访问方式一样,<对象名>.<静态数据成员>。另一种是静态成员变量特有的方式<类名>::<静态数据成员>



2.静态成员函数

还是上面的那个例子,加了一部分功能:

// C++Test.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using namespace std;


class StaticTest
{
private:
	//此处为声明,声明一个静态成员变量
	static int count;
	int id;
public:
	StaticTest(int i): id(i)
	{
		count++;
	}

	void Show()
	{
		//但是非静态成员函数可以访问静态成员函数和变量
		cout<<"ID: "<<id<<"  Count: "<<count<<endl;
	}

	static void ShowCount()
	{
		//静态成员函数不能访问非静态的成员,非静态成员函数也不行!
		//cout<<"ID: "<<id<<endl;     error C2597: 对非静态成员“StaticTest::id”的非法引用
		//Show();:                    error C2352: “StaticTest::Show”: 非静态成员函数的非法调用
		cout<<"Count: "<<count<<endl;
	}
};

//在类外定义并初始化静态成员变量,由于定义时需要分配空间,所以不能在类声明中定义
int StaticTest::count = 0;


int _tmain(int argc, _TCHAR* argv[])
{

	StaticTest test1(1);
	StaticTest test2(2);
	test1.Show();
	test2.Show();
	StaticTest::ShowCount();

	system("pause");
	return 0;
}

结果:

ID: 1  Count: 2
ID: 2  Count: 2
Count: 2
请按任意键继续. . .


关于静态成员函数注意的地方:

1)静态成员函数可以访问静态成员函数和静态成员变量。但是静态成员函数不能访问普通成员变量和普通成员函数。(因为静态成员函数没有this指针,属于共用)

2)非静态成员函数可以访问静态成员变量和静态成员函数。

3)定义在类外的静态成员函数不能加static,声明时加个static即可,定义时和普通成员函数相同。

4)静态成员函数与静态成员变量的调用规则一致,都不需要有对象就能调用。可以使用正常方法,也可以使用类名::调用。






【GlobalMapper精品教程】084:tif(tfw)、jpg(jgw)、png(pgw)的区别与联系 摘要:本文介绍了TFW、JGW、PGW等地理参考文件的基本原理和应用。这些文件通过简单的文本格式存储栅格图像的地理坐标信息,适用于平面坐标系下的GIS数据处理。文章详细说明了文件各行的含义,并提供了在ArcGIS和Globalmapper中生成这些文件的具体操作步骤,包括导出TIFF、JPG、PNG格式时勾选生成对应坐标文件的选项。这些文件虽然简单易用,但仅适用于平面坐标系,且功能相对有限。配套视频教程提供了更详细的操作演示。 阅读详情

相关推荐

BitLocker磁盘锁定解决方法

摘要:本文介绍了BitLocker加密磁盘被锁的两种情况及解决方法。对于系统盘锁定,建议在微软账户中查找48位恢复密钥;数据盘锁定可尝试密码或恢复密钥解锁。若密钥丢失,可通过IT支持或数据恢复服务尝试解决。预防措施包括妥善备份密钥到微软账户和离线位置,避免随意更改系统硬件配置。BitLocker安全性高,恢复密钥是解锁关键,提醒用户务必做好备份以防数据丢失。(148字)

yueke06442300的专栏 2670

C/C++中静态变量

C/C++中的静态变量1. 静态全局变量2.静态局部变量3. 静态函数4.类内静态成员变量5. 类内静态局部变量6.类内静态函数 C语言中与“静态”相关的词包括,静态全局变量,静态局部变量和静态函数,关键词是static。C语言中的变量从作用域分,可以分为全局变量和局部变量;从存储方式分,可以分为静态存储方式和动态存储方式。 需要区分的概念是,全局变量是存储在静态存储区的,所谓的静态存储区是一个进程所分配内存的.bss和.data段,但全局变量不是并不是静态变量。 1. 静态全局变量 下面代码中的a属于全局

Blunt_Du的博客 1万+

异常数据处理——3σ原则、箱线图

异常数据处理——3σ原则、箱线图 用不包括异常值的剩余数据的均值替换、删除DataFrame中某列有异常值的整行等方法

杨老师的小跟班(*∩_∩*) 9032

C/C++全局变量、局部变量、静态变量和常量

C和C++中全局变量,局部变量,静态变量和常量

Jason_Lee155的博客 4976

Spark 大数据环境搭建( Linux 系统安装和配置)

(1)选择典型安装(2)选择“安装程序光盘映像文件(iso)”,点击右侧的浏览按钮, 找到下载好的iso 文件,然后点击下一步。(3)将全名、用户名、密码、确认等几项均设为“spark”, 方便后面使用,然后点击下一步。(4)在命名虚拟机的窗体中,可以设定一下虚拟机名称或直接按默认,然后点击下一步。(5)在指定磁盘容量的窗体中,设定虚拟机使用的最大磁盘大小为60GB,虚拟机文件尺 寸是在使用过程中按需增长的,最大限制为 60GB。

2301_80186825的博客 1603

基于YOLO11的垃圾分类AI模型训练实战

通过这次实战,我们成功训练出了一个高性能的垃圾分类AI模型。项目展示了从数据准备、模型训练到结果分析的完整流程,为AI在环保领域的应用提供了有价值的参考。项目文件结构│ ├── best.pt # 最佳模型权重│ └── last.pt # 最新模型权重├── results.csv # 详细训练数据├── results.png # 训练曲线图├── confusion_matrix.png # 混淆矩阵└── args.yaml # 训练参数配置。

lydz1的博客 1657

C++静态变量

静态变量(Static Variables)是在程序运行期间保持其存在和值的变量,不会随着函数的调用而销毁和重新创建。静态变量在内存中分配一次,并且在整个程序的生命周期中保持存在。在 C++ 中,静态变量可以声明在函数内部、类内部或文件范围内,具体取决于变量的作用域需求。在这个示例中,函数中的count变量是一个静态变量。它在函数首次调用时进行初始化,并在后续的函数调用中保持其值。每次调用函数时,count的值都会递增,并在每次调用后保留上次调用的值。在这个示例中,MyClass类内部声明了一个静态变量。

斯坦福-MIT-Harvard-CMU 9393

告别手动处理:用 Bruker NSMatlabUtilities 工具箱批量分析 AFM 力曲线数据的实战案例

本文介绍了如何使用 Bruker NSMatlabUtilities 工具箱实现 AFM 力曲线数据的批量分析,解决传统手动处理耗时且易出错的问题。通过实战案例展示工具箱的核心功能,包括数据读取、力曲线分析和可视化,帮助科研人员提升数据处理效率和准确性。

weixin_28362173的博客 213

C/C++ 中 static 的用法全局变量与局部变量

c/c++基础知识

fcf1990501的专栏 2536

Codex CLI 的多模型切换实战:如何在中转 API 环境下灵活选择最佳模型

本文详细介绍了在Codex CLI中实现多模型切换的实战技巧,重点解析了如何在中转API环境下灵活选择最佳AI模型。通过配置Node.js环境和智能路由策略,开发者可以根据任务类型、编程语言和成本考量,在GPT-5、Claude和DeepSeek等模型间高效切换,提升代码生成、审查和优化的效率。

weixin_29291185的博客 836

58.Sobel边缘检测算子

注:在梯度运算中,很可能会出现负的灰度值,我们不能再采用uint8类型作为像素的数据类型,而是采用了CV_16S或者CV_32F这种有负数范围的类型,运算结果里的负数也不能不处理,否则在显示的时候就会被截断为0,这样就会丢失边界信息。如下图所示,对中心像素Z5求取多个方向的灰度差分,对于Z5的8邻域,分为4个方向,即对角线和水平垂直4个方向对:(z1, z9) ,(z2, z8), (z3, z7), (z6, z4) 给定邻域方向梯度矢量g的幅度为:|g| = <像素灰度差分>/<相邻像素的距离>。

twnkie的博客 4884

C++ 全局变量及静态全局变量的使用方法

全局变量的使用方法 参考链接:https://www.cnblogs.com/Dageking/p/3185230.htmlhttps://blog.youkuaiyun.com/hi_baymax/article/details/82425457 强烈建议使用xxx.h和xxx.cpp的形式创建全局变量和全局函数。.h和.cpp分别来声明和定义全局变量。此处建议,.h文件最好只写变量和函数的声...

ZDT_zdh的博客 7510

课设:FPGA音频均衡器 verilog设计及仿真 加报告

未来,随着FPGA技术的进一步发展和应用场景的扩大,FPGA音频均衡器将发挥出更大的作用,并为音频领域带来更多创新和突破。(a)音乐制作:均衡器可以调整音频信号中不同频段的能量分布,使得乐器声音更加明亮、动感,从而提升音乐制作的质量和创作的灵活性。以上步骤提供了设计一个音频均衡器的大致过程,但值得注意的是,具体实现的细节和复杂度可能因设计要求和所使用的平台而有所不同。确保设计满足预期的性能和要求。确定均衡器的功能和要求:定义你的音频均衡器需要实现的功能,包括频率范围、增益范围以及可调参数数量等。

QQ_778132974的博客 1586

【重学C++】【关键字】const与static关键字使用细节(穿插常见面试题)

本文我们来看下面试常问的两个关键字:const 与 static。这也是项目中最常用也是最有用的两个关键字了。文内会穿插一点面试题,大家可以参考下。

同学小张的博客 788

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

C++中static关键字和const关键字注意事项

C++中static关键字和const关键字注意事项1. static关键字1.1 class中的static成员变量1.2 class中的static成员函数2. const关键字2.1 指针常量与常量指针2.2 常量成员函数 1. static关键字 static关键字主要用于指定entity的生存周期:变量定义直至程序结束。 一个static变量只会被定义一次,之后就是对该entity的访问。对static变量的二次定义是非法的。 static关键字只在声明时使用,实际定义时无需static修饰

kuanyew的博客 484

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

C++static关键字用法

一、static的作用有三种:限制变量或函数作用域、保持变量内容的持久、默认初始化为0 1、被static关键字修饰的全局函数或者变量具有文件作用域,即只在当前文件中可见。 2、被static修饰的变量会被存储在静态存储区,生命周期也为从定义直至程序结束。对于局部变量,即使在函数退出后该静态变量依然存在,然而却也无法访问。此外,static修饰的变量一生只会被初始化一次(这点经常被用作面试的小...

weixin_33971130的博客 163

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

const, volatile, mutable, static 关键字详解

const修饰普通变量和指针 1. const修饰变量,一般有两种写法: const TYPE value; TYPE const value; 这两种写法在本质上是一样的。它的含义是:const修饰的类型为TYPE的变量value是不可变的。对于一个非指针的类型TYPE,无论怎么写,都是一个含义,即value值不可变。 例如: const int nValue; //nValue是co...

Kevin__Mei的博客 661

探索C++0x: 1. 静态断言(static_assert)

C++0x中引入了static_assert这个关键字,用来做编译期间的断言,因此叫做静态断言。 其语法很简单:static_assert(常量表达式,提示字符串)。 如果第一个参数常量表达式的值为真(true或者非零值),那么static_assert不做任何事情,就像它不存在一样,否则会产生一条编译错误,错误位置就是该static_assert语句所在行,错误提示就是第二个参数提示字符串。

以有涯随无涯 1万+

[转]C/C++中关键字static,const,inline,define,typedef的用法及其意义

static一、产生背景引出原因:函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,大家知道,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数中此变量的值保存至下一次调用时,如何实现?最容易想到的方法是定义一个全局的变量,但定义为一个全局变量有许多缺点,最明显的缺点是破坏了此变量的访问范围(使得在此函数中定义的变量,不仅仅受此函数控制)

我的技术学习库 1004

C++ extern关键字

一. extern 关键字 利用关键字extern,可以在一个文件中引用另一个文件中定义的变量或者函数, 1、引用同一个文件中的变量 #include<stdio.h> int func(); int main() { func(); //1 printf("%d",num); //2 return 0; } int num = 3; int func() { printf("%d\n",num); } 按照这个顺序,变量 num在main函数的后边进行

Candyerer的博客 9329

5. C++初始化列表、static成员、友元、匿名对象

C++初始化列表、static成员、友元、匿名对象、附练习题

分享C/C++/Linux/网络/数据库/数据结构 1858

五分钟明白static和const关键字

static关键字 类型名称 作用域 生命周期 默认初始值 全局变量 当前文件和其他文件(extern) 整个程序 0 局部变量 当前函数 整个定义的函数 乱数 static 全局变量 当前文件(其他文件extern也不可以) 整个程序 0 static 局部变量 当前函数 整个程序 0 ...

isco22的博客 361

C/C++面试笔试详细总结—基本概念及其它问答题

干货:C/C++笔试面试详细总结—基本概念及其它问答题 前言 本文覆盖了C/C++工程师面试的95%以上的常考基础概念及技术细节问答题(不含STL和socket以及嵌入式的深入问答,仅为中等层面问答),整理总结不易,不点赞收藏一波再走嘛? 文章目录干货:C/C++笔试面试详细总结—基本概念及其它问答题前言1、关键字 static 的作用是什么?2、“引用”与指针的区别是什么?3、.h 头文件中的 ifndef/define/endif 的作用?4、#include 与 #include “file.h”的

Spuer_Tiger 1万+

【C++】C/C++ 中 static 的用法全局变量与局部变量

C/C++ 中 static 的用法全局变量与局部变量 目录 1. 什么是static? 1.1 static 的引入 1.2 静态数据的存储 2. 在 C/C++ 中static的作用 2.1 总的来说 2.2 静态变量与普通变量 2.3 静态局部变量有以下特点: 实例 3. static 用法 3.1 在 C++ 中 3.2 静态类相关 3.3 总结: 实例 1. 什么是static? static 是 C/C++ 中很常用的修饰符,它被用来控制变量的存储方式和可见性。

格物致知 643

C/C++关键字 static 和 const

c/c++关键字static和const 一、关键字static 参考:https://www.cnblogs.com/BeyondAnyTime/p/2542315.html 1. 静态全局变量和函数 生命周期(整个程序运行过程)不变,作用域限制在本文件中,全局变量在别的文件加extern 无效,别的文件即使include头文件也不能使用该头文件中的静态函数。 //静态全局...

Wang_Jiankun的博客 408

static在内存层面的作用_面经:C++面试精品问答题总结(一)

前言这里收集市面上所有的关于算法和开发岗最容易遇到的关于C++方面的问题,问题信息来自互联网以及 牛客网 的C++面试题目汇总。答题总结的顺序大体是 按照问题出现的频率 进行排序的,也有自己被面试问到的问题,越在前面的问题再面试中越容易被问到,作为笔记。当然,这些C++概念适合所有人,并非是准备面试或者正在面试的童鞋,如果想对C++多了解一些或者想避免一些C++常见错误的,可以建议看一看本系列文章...

weixin_39534873的博客 187
上一篇: Direct-X学习笔记--Alpha颜色混合
下一篇: Direct-X学习笔记--纹理映射进阶
puppet_master
puppet_master 领域专家: C/C++技术领域 领域专家: C/C++技术领域
博客等级 码龄12年 2695粉丝 161原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值