extern\const\static的使用详解

这篇具有很好参考价值的文章主要介绍了extern\const\static的使用详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.extern

利用关键字extern,可以在一个文件中引用另一个文件中定义的变量或者函数,extern 可以应用于全局变量、函数或模板声明。

关键字 extern 具有四种含义,具体取决于上下文:

  • 在非 const 全局变量声明中,extern 指定变量或函数在另一个转换单元中定义。 必须在除定义变量的文件之外的所有文件中应用 extern

  • 在 const 变量声明中,它指定变量具有 external 链接。 extern 必须应用于所有文件中的所有声明。 (默认情况下,全局 const 变量具有内部链接。)

  • extern "C" 指定函数在别处定义并使用 C 语言调用约定。 extern "C" 修饰符也可以应用于块中的多个函数声明。

  • 在模板声明中,extern 指定模板已在其他位置实例化。 extern 告知编译器它可以重复使用另一个实例化,而不是在当前位置创建新实例。

比如

extern\const\static的使用详解

 注意:extern关键字只需要指明类型和变量名就行了,不能再重新赋值,初始化需要在原文件所在处进行,如果不进行初始化的话,全局变量会被编译器自动初始化为0。但是在声明之后就可以使用变量名进行修改了。

2.const

const修饰的变量是不能被修改的用来修饰内置类型变量,自定义对象,成员函数,返回值,函数参数。

const int func(const int a)
{
	printf("%d", a);
}
int main()
{
	//修饰常量
	const char a = '1';
	//char* b = &a;
	char b = '2';
	//修饰地址
	const char* c = &b;
	char* const d = &b;
	//修饰函数
	int x = 0;
	const int  f = func(x);
	return 0;
}

3.static

修饰局部变量

  1. 用静态关键字static修饰的局部变量,在编译的过程中,会在数据区为该变量开辟空间,并对其进行初始化,如果代码中未对其进行初始化,则系统默认初始化为0。
  2. 用static修饰的局部变量,会延长局部变量的寿命,超出函数的生存期。
  3. 对静态关键字修饰的局部变量的初始化。

修饰全局变量

  1. 全局变量定义在函数体外部,在全局数据区分配存储空间,且编译器会自动对其初始化。
  2. 普通全局变量对整个工程可见,其他文件可以使用extern外部声明后直接使用。也就是说其他文件不能再定义一个与其相同名字的变量了(否则编译器会认为它们是同一个变量)。
  3. 静态全局变量仅对当前文件可见,其他文件不可访问,其他文件可以定义与其同名的变量,两者互不影响。
  4. 在定义不需要与其他文件共享的全局变量时,加上static关键字能够有效地降低程序模块之间的耦合,避免不同文件同名变量的冲突,且不会误使用。

修饰函数

函数的使用方式与全局变量类似,在函数的返回类型前加上static,就是静态函数。其特性如下:文章来源地址https://www.toymoban.com/news/detail-430063.html

  1. 静态函数只能在声明它的文件中可见,其他文件不能引用该函数。
  2. 不同的文件可以使用相同名字的静态函数,互不影响。
  3. 非静态函数可以在另一个文件中直接引用,甚至不必使用extern声明。

到了这里,关于extern\const\static的使用详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 嵌入式C语言关键字(const、static、volitatile)

    C语言中const修饰通常是用来声明常量,并声明常量的值不能修改。当涉及 指针变量 时情况就会变得更加有趣,需要特别注意。因为有两样东西都有可能成为常量— 一种是用来限定指向的空间的值不可修改;另一种是限定指针不可修改 。下面是几个声明的例子: 总结:cons

    2024年02月06日
    浏览(45)
  • 【C++】const、static关键字和构造函数初始化

    💗个人主页💗 ⭐个人专栏——C++学习⭐ 💫点击关注🤩一起学习C语言💯💫 目录 1. const修饰成员函数 1.1 语法格式 1.2 权限放大缩小 1.3 思考 1.4 解答 2. 再谈构造函数 2.1 构造函数体赋值 2.2 初始化列表 2.3 explicit 3. static成员 3.1 静态变量 3.2 静态函数 3.3 静态成员变量

    2024年02月19日
    浏览(46)
  • C++面试八股文:static和const的关键字有哪些用法?

    某日二师兄参加XXX科技公司的C++工程师开发岗位第7面: 面试官:C++中, static 和 const 的有哪些用法? 二师兄: satic 主要用在以下三个方面:1.用在全局作用域,修饰的变量或者函数为静态的,限制在本文件内使用。2.方法内修饰修饰静态局部变量,在第一次访问

    2024年02月08日
    浏览(48)
  • 在C++和C中static关键字的用法,在C++和C中const关键字的用法

    1、在C++和C中static的用法 答:static表示存储类型,修饰数据类型。在C语言中,static修饰局部变量,内存分配在静态区,生命周期延长,作用域不变。static修饰全局变量,内存分配在静态区,作用域被局限于本文件,不能被extern引用。static修饰函数,不能被exter

    2024年02月10日
    浏览(41)
  • C/C++ static关键字详解(最全解析,static是什么,static如何使用,static的常考面试题)

    目录 一、前言  二、static是什么? 三、static修饰的对象是什么?   四、C 语言中的 static  🍎static的C用法  🍉static的重点概念  🍐static修饰局部变量  💦static在修饰局部变量和函数的作用  🍓static修饰全局变量和函数 💦static在修饰全局变量和函数的作用

    2024年02月05日
    浏览(47)
  • 【C++】const关键字的详解!!

    💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃 个人主页 :阿然成长日记 👈点击可跳转 📆 个人专栏: 🔹数据结构与算法🔹C语言进阶 🚩 不能则学,不知则问,耻于问人,决无长进 🍭 🍯 🍎 🍏 🍊 🍋 🍒 🍇 🍉 🍓 🍑 🍈 🍌 🍐 🍍 const是永恒不

    2024年02月03日
    浏览(43)
  • 【C】static关键字详解

    static的汉语意思是静态的,在C语言中static可以用来修饰 局部变量、全局变量和函数。 在这里给大家补充一个知识,我们的数据在内存中存储时,大概分为3个区域。 1. 栈区 :我们创建的局部变量、形参等一般就存放在这个区域,离开作用域是会自动销毁,将空间还给

    2024年02月10日
    浏览(40)
  • C++—static关键字详解

    C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。 静态全局变量有以下特点: 1、该变量在全局数据区分配内存; 2、未经初始化的静态全局变量会被程序自动初始化为

    2024年02月15日
    浏览(38)
  • 【C语言】static关键字详解

    目录 1.static是什么? 2.static修饰的对象是? 3.static修饰后改变了什么? 4.static修饰操作演示 (1) 局部变量 如果加了static修饰局部变量i会怎么样? 全局区(静态区) (2) 全局变量 如果给全局变量加上了static修饰呢? 二者区别?  这样用有什么用? (3) 函数 5.总结

    2024年02月10日
    浏览(45)
  • 详解Java的static关键字

    不依赖于对象实例:静态方法不需要依赖于任何对象实例,因为它们与具体的对象实例无关联。这意味着在没有创建对象实例的情况下,就可以直接通过类名访问或调用静态方法。 可以访问静态成员:静态方法可以访问类的静态成员(静态字段和静态方法),但不能访问非静

    2024年02月05日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包