偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

面試官:static 全局變量和普通全局變量的區(qū)別是什么?

開發(fā)
Static 全局變量和普通全局變量在 C 語言中的主要區(qū)別體現(xiàn)在鏈接屬性和作用域上,通過合理使用static,可以提高代碼的封裝性和安全性,減少全局命名空間的污染。?

Static 全局變量和普通全局變量在 C 語言中的主要區(qū)別體現(xiàn)在鏈接屬性和作用域上。

1. 鏈接屬性

在 C 語言里有鏈接屬性這個(gè)概念,分文:內(nèi)部鏈接和外部鏈接。

  • 普通全局變量:具有外部鏈接(external linkage),即其他源文件可以通過extern聲明訪問該變量。
// file1.c
int globalVar = 10; // 普通全局變量

// file2.c
extern int globalVar; // 正確:可以訪問file1.c中的globalVar

  • static 全局變量:具有內(nèi)部鏈接(internal linkage),只能在定義它的源文件內(nèi)訪問,其他文件無法通過 extern 引用。
// file1.c
static int staticVar = 20; // static全局變量

// file2.c
extern int staticVar; // 錯(cuò)誤:無法訪問file1.c中的staticVar

2. 作用域

  • 普通全局變量:作用域是整個(gè)程序(所有源文件),前提是其他文件正確使用extern聲明。
  • static 全局變量:作用域僅限于定義它的源文件,其他文件不可見。

3. 用途與優(yōu)勢(shì)

  • 普通全局變量:適合在多個(gè)文件之間共享數(shù)據(jù),但需謹(jǐn)慎使用,避免命名沖突。
  • static 全局變量:用于隱藏實(shí)現(xiàn)細(xì)節(jié),避免命名沖突,增強(qiáng)模塊化。例如:
// utils.c
static int counter = 0; // 僅在本文件內(nèi)使用
void increment() { counter++; } // 其他文件無法直接修改counter

4. 存儲(chǔ)與生命周期

兩者相同:存儲(chǔ)于靜態(tài)存儲(chǔ)區(qū)。靜態(tài)存儲(chǔ)區(qū)包括初始化數(shù)據(jù)段(.data)和未初始化數(shù)據(jù)段(.bss) 。普通全局變量和 static 變量(無論是全局還是局部靜態(tài))都在這里,生命周期都是整個(gè)程序運(yùn)行期間,且默認(rèn)初始化為零值。如果變量被顯式初始化了非零值,就放在.data 段;如果未初始化或初始化為零,則放在.bss 段。這樣能節(jié)省磁盤空間,因?yàn)?bss 段不存儲(chǔ)實(shí)際數(shù)據(jù),只在程序加載時(shí)分配內(nèi)存。

5. 總結(jié)

特性

普通全局變量

static 全局變量

鏈接屬性

外部鏈接(可跨文件)

內(nèi)部鏈接(僅本文件)

作用域

全局

文件內(nèi)

防止命名沖突

強(qiáng)(隱藏變量)

頭文件中的使用

需用

避免在頭文件中定義

通過合理使用static,可以提高代碼的封裝性和安全性,減少全局命名空間的污染。

責(zé)任編輯:趙寧寧 來源: CppPlayer
相關(guān)推薦

2013-07-17 16:16:06

Android全局變量定義全局變量Application

2010-11-12 10:08:55

SQL Server全

2013-07-25 15:15:26

iOS開發(fā)學(xué)習(xí)iOS全局變量

2010-03-09 14:12:55

Python全局變量

2009-12-04 13:31:21

PHP全局變量不能生效

2009-09-24 09:28:00

Scala講座全局變量scala

2009-11-06 13:28:19

Javascript框

2013-07-22 14:07:47

2010-02-01 14:28:37

Python全局變量

2015-01-07 14:41:32

Android全局變量局部變量

2024-05-29 08:49:22

Python全局變量局部變量

2009-12-09 17:07:08

PHP unset全局

2009-12-04 13:14:19

PHP Global變

2021-02-26 13:42:01

函數(shù)全局變量

2017-02-08 12:28:37

Android變量總結(jié)

2014-06-23 10:25:12

2010-09-08 17:25:17

SQL全局變量

2022-11-28 11:15:20

Tomcat回顯方式

2023-09-24 23:40:54

Python變量

2011-08-23 13:54:10

LUA全局變量
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)