c語言static int的值會變嗎,c語言 static運用,靈活改變生命周期,讓你寫代碼如魚得水

 2023-12-06 阅读 52 评论 0

摘要:在C語言中static是非常重要的一個關鍵字 static意為靜態的,它的用法基本分為三種 1. 修飾局部變量(改變局部變量的生命周期) 2. 修飾全局變量(使全局變量僅作用于當前源文件) c語言static int的值會變嗎、3. 修飾函數(使函數僅作用

在C語言中static是非常重要的一個關鍵字

static意為靜態的,它的用法基本分為三種

1. 修飾局部變量(改變局部變量的生命周期)

2. 修飾全局變量(使全局變量僅作用于當前源文件)

c語言static int的值會變嗎、3. 修飾函數(使函數僅作用與當前源文件)

怎么修飾的?而生命周期又是怎么被改變的?

我舉個例子,讓我們一起來看一下

c語言變量的作用域和生命周期?先寫一串取a的地址的代碼

現在我們運行這段代碼,取a的地址來看一下

a的地址為00eff748

c語言中%s和%c、好,我們接著再運行一次

?會發現,a的地址變成了012ff8b4

a的地址變了,a生命周期就只有一個循環

是因為a的前面其實還隱藏了一個關鍵字auto

c語言局部變量和全局變量,auto意為自動的,它是個自動變量,自動創建,自動銷毀

如果不加隱藏我們的代碼其實是這樣的

auto是自動生成的,即使你把它刪掉,它其實還在那

c語言周期函數?那我們怎么改變a的生命周期呢,這時候static就派上用場了

只要我們在int a = 0;前面加上static就可以了,用staticauto頂替掉

?這時候我們再來測會發現,不管運行多少次,a的地址都變為了一個定值

static變量的生命周期??我們就能總結出一點,static把a的生命周期改變了

當然,static不止用于地址,它在循環中的表現同樣出色

可以看到,上面兩組代碼,一個加了static修飾,一個沒加

左邊代碼沒有static修飾a,所以a生命周期就只有一個循環,一個循環結束就會被重置為1

c語言形參與實參?所以printf打印出來的結果為2 2?2 2 2 2 2 2 2?2

而右邊代碼有個static修飾,a生命周期被延長,取消了自動銷毀的特性,所以每次循環中a的值都+1

所以printf打印出來的結果為2 3 4 5 6 7 8? 9 10 11?

對,還要補充一點?

c語言函數調用的方式有哪些。static修飾局部變量,表面上是改變局部變量的生命周期

本質上是改變了變量的存儲類型,由棧區變為靜態區

(內存基本劃分為幾個區域,棧區,堆區,靜態區)

?這里就不細說了

c語言算法的概念、stiatic修飾全局變量,使全局變量由作用整個工程變為僅作用于當前源文件

本質上是將全局變量的外部鏈接屬性變為內部鏈接屬性

static修飾函數跟static修飾全局變量的本質基本一致

第一次寫博客,本人也才剛學編程4天,有什么錯誤的地方還請大佬們指出來

先生們有何教我?

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/191388.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息