日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C語言中static的使用介紹_C 語言

作者:前禿無量 ? 更新時間: 2022-03-11 編程語言

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;
}

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

那為什么結果是2222222222呢

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

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

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

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

我們的內存分為三大類

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

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

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

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

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

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

2. static 可以修飾全局變量

我們再創建一個源文件?

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

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

如圖

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

此時就會報錯??

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

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

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

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

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

3.static 可以修飾函數

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

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

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

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

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

總結

當我們使用一個局部變量? 出了他的范圍 不希望他被銷毀下次進來之后還在 那我們就可以拿static 修飾?

當我們希望一個全部變量 在他自己源文件使用 任意其他地方不想讓別人看到 也可以用static修飾

當我們寫的函數只是自己用一下 不希望別人引用 則也可以用static修

原文鏈接:https://blog.csdn.net/weixin_64145417/article/details/122032153

欄目分類
最近更新