c語言之函式中的變數

2021-10-06 14:49:54 字數 2805 閱讀 1054

函式內部或塊內定義的變數。

在函式外面定義的變數為全域性變數

全域性變數為文字中的其他函式共有,它的有效範圍是從定義點開始,直到原始檔結束,全域性變數又稱為外部變數。

/*列印10個100~200之間的隨機數並輸出最大和最小數*/

#include "stdio.h"

#include "math.h"

#include "stdlib.h"

int min; // 全域性變數

int fid()

void main()

/*不建議使用全域性變數的原因:

為了方便區別全域性變數和區域性變數,將區域性變數的第乙個字母用大寫表示

1、全域性變數在程式的全部執行過程中都占用儲存單元,而不是在需要時才開闢單元。

2、它使等函式的通用性降低。

3、全域性變數過多,會降低程式的清晰性

*/

為了方便區別全域性變數和區域性變數,將區域性變數的第乙個字母用大寫表示

1、全域性變數在程式的全部執行過程中都占用儲存單元,而不是在需要時才開闢單元。

2、它使等函式的通用性降低。

3、全域性變數過多,會降低程式的清晰性

按變數的存在時間(生命週期)來劃分,可以分為靜態儲存變數和動態儲存變數。

動態儲存變數(這時一種節省記憶體空間的儲存方式):當程式執行進入定義它的函式或復合語句時才被分配儲存空間;程式執行結束離開此函式或復合語句時,釋放動態動態儲存變數所占用的空間。

靜態儲存變數:在程式執行的整個過程中,始終占用固定的記憶體空間,直到程式執行結束,才釋放占用的記憶體空間。靜態儲存類別的變數被放於內在空間的靜態訪問區域

c程式執行時,占用三部分的記憶體空間

用關鍵字auto說明變數是自動型別變數

格式:auto 型別  變數名;

自動型別變數屬於動態區域性變數,儲存在動態儲存區,定義時可以加auto也可以不加,由此可知區域性變數都是自動型別變數

自動型別的分配和釋放儲存空間的工作是由編譯系統自動處理的

int function1(int a)

用關鍵字register說明變數是暫存器型別

格式:register 型別  變數名;

register int a;

暫存器變數是動態區域性變數,存放於cpu的暫存器或動態儲存區中,以提高訪問速度,暫存器的訪問速度比記憶體快。

該類變數的作用域、生存期與自動型別變數相同;如果沒有存放在通用暫存器中,按自動型別變數處理

計數機中暫存器個數是有限的,使用register的注意事項

#include "stdio.h"

//#include "math.h"

//#include "stdlib.h"

void main()}/*

用關鍵字register說明變數是暫存器型別

格式:register 型別 變數名;

register int a;

暫存器變數是動態區域性變數,存放於cpu的暫存器或動態儲存區中,以提高訪問速度,暫存器的訪問速度比記憶體快。

該類變數的作用域、生存期與自動型別變數相同;如果沒有存放在通用暫存器中,按自動型別變數處理

計數機中暫存器個數是有限的,使用register的注意事項

1、暫存器型別變數不宜過多,一般將頻繁使用的變數放在暫存器中(迴圈涉及的內部變數),以提高程式執行的速度

2、變數的長度應該與常用暫存器的長度相當,一般為int型或char型。

*/

靜態區域性變數

靜態區域性變數是儲存在靜態儲存區的,所以在整個程式開始的時候就被分配固定的儲存單元,整個程式執行期間內不再被重新分配,故其生存期是整個程式的執行期間。

靜態區域性變數本身也是區域性變數,具有區域性變數的性質,即其作用域是侷限在定義它的本函式內的,如果離開了定義它的函式,該變數就不再起作用,但其值任在,因為儲存空間並未釋放。

靜態區域性變數賦初值的時間是編譯階段,並且只被初值一次,即使它所有的函式呼叫結束,也不釋放儲存單元,因此不管呼叫多少此該靜態區域性變數的函式,它任保留上一次呼叫函式時的值。

乙個檔案中定義的全域性變數預設為外部的,即extern關鍵字可以省略。但是如果其他檔案要使用這個檔案中定義的全域性變數,則必須在使用前用extern作為外部宣告,外部宣告通常放在檔案的開頭

#include extern int days();

extern int year,month,day;

void main()

int year,month,day;

int days()

;if((year%100)&&!(year%4)||!(year%400))

a[2]=20;

for(i=0;i

count+=a[i];

count=count+day;

return count;

}

C語言之函式返回區域性變數

這個函式有什麼問題?請指出。美國著名硬碟公司2008年4月面試題 char stra char str hello,world return str 一般的來說,函式是可以返回區域性變數的。區域性變數的作用域只在函式內部,在函式返回後,區域性變數的記憶體已經釋放了。因此,如果函式返回的是區域性變數的...

C語言之函式

1.前導程式 2.函式概述 1 列印乙個信頭 2 include3 include 4 define name gigathink,inc.5 define address 101 megabuck plaza 6 define place megapolis,ca 94904 7 define w...

C語言之函式

函式是c語言學習中乙個重要的部分,可以說在開始學習c語言的時候懂得了函式的相關知識對學習c語言很重要特別是有信心上的幫助。下面寫乙個函式的例子,include int foo int num1,int num2 int main 在主函式中有三個臨時變數a,b,c。a和b已知,c被賦予以a和b為引數...