有關c語言中靜態變數的題目,求解題全過程和答案

時間 2025-01-30 22:15:20

1樓:網友

輸出為12,10,語言的壓棧順序是從右到左,因此fun(fun(c))最先執行,fun(c)最後執行。fun(fun(3))先求裡面的fun(3),返回值為3+5+1=9,此時靜態變數c=1,fun(9)返回值為9+5+2=16,靜態變數c=2;fun(2)返回值為2+5+3=10,靜態變數c=3;fun(3)返回值為3+5+4=12,靜態變數c=4。

樓上的把c語言的壓棧順序搞反了吧?

2樓:網友

fun()函式中b是臨時變數,每次呼叫函式都會重新定義,所以執行到return語句的時候b的值永遠為5;c是靜態變數,在程式初始化時分配空間,直到程式結束才釋放,所以c只被定義一次,每次呼叫fun()其值就會加1;

printf("%d,%d,%d",fun(c),fun(a),fun(fun(c)))從左往右依次執行,又因為呼叫函式需要先確定其引數,所以執行順序為:

fun(3):3+5+1=9;

fun(2):2+5+2=9;

fun(3):3+5+3=11;

fun(11):11+5+4=20;

執行結果為:

3樓:網友

注意fun函式的c是靜態的,不同於main中的c。其實你也就是主要分析變數的作用域和生命域。每次呼叫fun函式時c都會自加1,而其b的值在呼叫完後會復原。

詳細點就是static int c和int b所儲存的位置不同。

在c語言中,程式執行期間,其值可以改變的量叫做()

4樓:教育仁昌

在c語言中,程式執行期間,其值可以改變的量叫做變數。

當在窗體中設計使用者介面時,c語言會自動為產生的物件(包括窗體本身)建立一組變數,即屬性變數,併為每個變數設定其預設值。這類變數可供使用者直接使用,比如引用它或給它賦新值。使用者也可以建立自己的變數,以便存放程式執行過程中的臨時資料或結果資料等等。

c語言中靜態變數需要自己釋放?那外部變數屬於靜態儲存方式,書上說靜態變數的生存期是整個程式的執行期

5樓:惠企百科

對,乙個執行的程式屬於乙個程序,程序是由作業系統管理的,程式結束了,該程式所佔用的資源會由作業系統來**。

靜態變數的靜態:變數佔用的存位址不釋放,也就是說它的位址它從頭到尾一內直佔著,容不給其他記憶體單元佔用而已,其本身的值是可以改變的。

動態的變數:比如呼叫函式體裡定義的變數,在函式執行後便釋放出去,把有用的位址資源貢獻給其他量,釋放以後如果你用指標來列印這個位址的值的話,就很有可能不是原來的值了。

如果在程式中要將a定義為靜態變數,且為整型數,則應使用的語句是?

6樓:匿名使用者

static是定義了靜態變數dim是定義了動態變數我想樓主可能不明白什麼是靜態變數,下面解釋一下靜態變數吧: (1)靜態區域性變數在函式內定義,但不象自動變數那樣,當呼叫時就存在,退出函式時就消失。靜態區域性變數始終存在著,也就是說它的生存期為整個源程式。

2)靜態區域性變數的生存期雖然為整個源程式,但是其作用域仍與自動變數相同,即只能在定義該變數的函式內使用該變數。退出該函式後, 儘管該變數還繼續存在,但不能使用它。

3)允許對構造類靜態區域性量賦初值。若未賦以初值,則由系統自動賦以0值。

4)對基本型別的靜態區域性變數若在說明時未賦以初值,則系統自動賦予0值。而對自動變數不賦初值,則其值是不定的。 根據靜態區域性變數的特點, 可以看出它是一種生存期為整個源程式的量。

雖然離開定義它的函式後不能使用,但如再次呼叫定義它的函式時,它又可繼續使用, 而且儲存了前次被呼叫後留下的值。 因此,當多次呼叫乙個函式且要求在呼叫之間保留某些變數的值時,可考慮採用靜態區域性變數。雖然用全域性變數也可以達到上述目的,但全域性變數有時會造成意外的***,因此仍以採用區域性靜態變數為宜。

c語言,題目如圖

7樓:百i度網友

此應該是為了說明算式k- -特意設計的一道題目。在c語言中,算式k- -單獨使用時,表示k值減1,即k=k-1。而對於將算式k- -做為引數代入到其它語句,當被代入的語句在執行時,是先使用未曾減1的k值來執行操作,在被代入語句執行完成後,再將k值減1。

所以在本題目中,whiⅰe(k- -表示在k非0吋,繼續執行whiⅰe,且k=k-1; 而k為0時,結束while操作,且依然會執行一次k=k-1,因此k= -1。

8樓:網友

while(k--)

迴圈語句最後有分號,只要滿足迴圈條件,就一直迴圈。直到不滿足迴圈條件,才退出迴圈,執行後面的printf語句(即printf語句只有在前面的迴圈結束後,執行一次)。

判斷條件為k--,即判斷k是否等於0,等於0時退出迴圈,否則一直進行迴圈。每次判斷之後k自減1。

因此一直迴圈到k=0時,不滿足迴圈條件,退出迴圈,k自減1,k的值變為-1

執行printf語句,輸出k的值,輸出-1。

while(k--)注意與while(k--)進行區分,最後帶不帶分號,兩者是不同的。

9樓:左冷禪

這需要理解後部--操作的原理,如果使用c語言的函式來實現,等價於**實現:

int k = 1;

int decrement()

while (decrement())

println("%d = k", k);

當tmp==0的時候就會退出while迴圈,這個時候的k其實是-1

10樓:匿名使用者

k- -會先完成其他運算後再自減1,k一開始等於1,它會先進行while的判斷再自減1,也就是先while(1),然後k=k-1=0,然後進行下一次迴圈,也就是while(0),while迴圈跳出,k=k-1=-1

這是跟- -k作出區別,- k會先完成自減,再進行其他運算,如果是- -k,那k就等於0

11樓:風見雲夜

在while迴圈中第一次迴圈k先用後減判定為真執行迴圈此時k=0

第二次迴圈k先用後減判定為假結束迴圈,這是k再次減一。

12樓:網友

先判斷 i=0,括號裡i=0-1 ,跳出迴圈 i=-1了。

13樓:陳大樹

因為k=0退出迴圈後,它還做了次自減。

14樓:喔鈤啊

k––是先執行在自減,也就是先while(k=1); 然後k==0, 注意while語句後有乙個分號,說明while語句的迴圈體是空語句,而不是下邊的輸出語句。此時k==0繼續迴圈,while(0)退出迴圈。此時k==-1,執行輸出語句。

15樓:網友

20的眼神,過馬路還算能看見幾百公尺外汽車車牌。

16樓:網友

while(k--)

意思是直到k--<0的時候不進入迴圈 k--是判斷後減後 也就是說什麼時候k==0什麼時候不迴圈k==0的第乙個數是0所以不迴圈的時候k=-1 然後就輸出了。

17樓:已然谷己

紫花和尚 鞠樂如 盜戶 某乙卷八 田七郎 保住 公孫九娘 促織 柳秀才 水災 諸城某甲 庫官。

18樓:外語懊匱

蕭七 亂離二則 菱角 餓鬼 考弊司 大人 向杲 董公子週三 鴿異 聶政 冷生 藥僧 皂隸 紅毛氈 抽腸。

C語言關於迴圈中包含靜態變數,c語言for迴圈裡,static變數也能儲存值嗎?為什麼?

首先,要知道作用域的概念。c有 塊作用域,檔案作用域和函式原型作用域。詳細內容書裡面可以講一章,涉及到鏈結型別,作用域,儲存時期。這裡只說一點,你可能比較關心,看下面這個例子 include char a global void global void local int main global 將...

C語言中有哪些儲存型別,C語言中變數的儲存型別有哪幾種,儲存方式哪幾種?謝嘍

千鋒教育 c語言中的儲存型別有auto,extern,register,static 這四種,儲存型別說明了該變數要在程序的哪一個段中分配記憶體空間,可以為變數分配記憶體儲存空間的有資料區 bbs區 棧區 堆區。1.auto儲存型別 auto只能用來標識區域性變數的儲存型別,對於區域性變數,auto...

C語言中,如何表示變數的n次方,C語言中,如何表示一個變數的n次方?

圭仁丘妍 c語言中計算一個數的n次方可以用庫函式pow來實現。函式原型 double pow double x,double y 如下 include include intmain 注 使用pow函式時,需要將標頭檔案 include包含進原始檔中。擴充套件資料 其他方法表示一個數的n次方 inc...