C語言中如何使用static

蝸牛 互聯網技術資訊 2021-12-26 152 0

這篇文章主要介紹C語言中如何使用static,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

1.static 可以修飾局部變量

首先讓我看看這段代碼

#include<stdio.h>
void?test()
{
	int?a?=?1;
	a?=?a?+?1;
	printf("%d",?a);
}
int?main()
{
	int?i?=?0;
	while?(i?<?10)
	{
		test();
		i++;
	}
	return?0;
}

你認為輸出的結果是什么呢?

C語言中如何使用static  c語言 第1張

那為什么結果是2222222222呢

C語言中如何使用static  c語言 第2張

因為局部變量 a 進入這個范圍創建? 出了這個范圍銷毀? ?所以結果都是2

當我們加上static 的結果又會是什么

C語言中如何使用static  c語言 第3張

那為什么加上 static 結果就不一樣了

我們研究一下static的使用原理

我們的內存分為三大類

C語言中如何使用static  c語言 第4張

我們的局部變量放在棧區??

而static把a放在了靜態區? ?而在靜態區的變量 出了他的范圍是不銷毀的

我們對比一下 可能更加直觀

C語言中如何使用static  c語言 第5張

?所以 static 修飾局部變量的時候,其實改變的是局部變量得存儲位置

靜態得局部變量是放在靜態區,放在靜態區的變量出了作用域是不會銷毀的,相當于生命周期延長了。

?補充? ?變量的作用域是不變的,只是生命周期延長了

2. static 可以修飾全局變量

我們再創建一個源文件?

C語言中如何使用static  c語言 第6張

? ?全局變量的作用域是整個工程

如果我們想引用另一個源文件的函數? ?? 這里我們不得不說 extern 這個關鍵字

如圖

C語言中如何使用static  c語言 第7張

? static 可以修飾全局變量? 如果我們再全局變量前 加上static會是什么結果呢

C語言中如何使用static  c語言 第8張

此時就會報錯??

一個全局變量具有外部鏈接屬性的 (就是可以被其他源文件引用)但是被static 修飾后外部鏈接屬性就變成了內部鏈接屬性 只能在自己所在的源文件內部使用不能在其他文件內部使用

所以再次調試的時候就會報錯

那 static 修飾的全局變量的本質是? 外部鏈接屬性發生改變? ?而不是他的作用域變小

static 修飾全局變量的意義是? 如果你定義了一個全局變量? 別人用 extern 就可以隨便使用??

如果你不想讓別人看? 就可以用static .?

3.static 可以修飾函數

我們用另一個源文件創建一個函數? 如圖

用 關鍵字extern 聲明后? 調試結果

C語言中如何使用static  c語言 第9張

這里我們在函數前加上static 又會是什么結果呢?

C語言中如何使用static  c語言 第10張

C語言中如何使用static  c語言 第11張

? 其實一個函數本身具有外部鏈接屬性? 被static修飾后 外部鏈接屬性變成了內部鏈接屬性? 只能在源2.c 內部使用 其他源文件無法使用? ? 使用上感覺作用域變小

我們可以發現 static 修飾全局變量和修飾函數用法一樣? ?

以上是“C語言中如何使用static”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注蝸牛博客行業資訊頻道!

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:niceseo99@gmail.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

評論

日本韩欧美一级A片在线观看