首先會將自己遇到的問題列出來,然後綜合起乙個模組一起回答=w=
一、c語言函式的基本知識
1.對於函式的理解:c語言中,函式可以沒有形式引數麼?
2.函式的預設返回型別為什麼形?
3.函式在命名時,形式引數,區域性變數,外部引數的同名問題
4.靜態變數的真正用法和含義
5.關於return語句的理解
6.乙個例項,用於說明其關係。
問題的回答
變數型別
定義位置
作用域儲存位置
解釋說明
全域性變數
函式體外
定義點起到整個程式結束
靜態儲存區
生命週期為整個執行期間,static型別全域性變數僅限本檔案使用,非static可用extern宣告後使用
靜態區域性變數
函式體內
所在函式語句塊內部
靜態儲存區
定義時使用關鍵字static,生命週期為程式的的整個執行期間
自動區域性變數
函式體內
所在函式語句塊內部
動態資料區
定義時使用關鍵字auto(可省略),週期為函式(或者語句塊)的執行期間。
暫存器變數
函式體內
所在函式語句塊內部
cpu通用暫存器
定義時使用關鍵字register,現很少使用
a1:c語言中,函式當然可以沒有形式引數,但是函式在定義時是平等的,既函式不可以巢狀定義,如果函式的返回引數預設,那麼自動填補成int。
a2:函式的返回引數值預設,自動填補成int形。
a3:1.區域性變數的作用域僅僅在本函式或者語句塊,所以不同函式中可以出現相同名字的區域性變數。
2.形式引數作為區域性變數的一種,其作用域在該函式(語句塊中),其本身就是呼叫主函式中的區域性變數,或者全域性變數,故兩者本身不在同一段作用域中,因此,形式引數可以與對應的實在引數變數同名
eg:#include
int fun(int x)
int main()
int x;
scanf("%d",&x);
fun(x);
return 0;
}//其是合理且正確的
3.外部變數是在函式外部定義的變數,與區域性變數可以同名,只不過在同名區域性變數所在的作用域內部該全域性變數將不再起作用。
4.形式引數不能與區域性變數同名,因為區域性變數與函式(語句塊)的形式引數在同一段作用域,其相互影響,產生變數歧義。
a4:(借鑑大佬部落格)
通常,在函式體內定義了乙個變數,每當程式執行到該語句時都會給該區域性變數分配棧記憶體。但隨著程式退出函式體,系統就會收回棧記憶體,區域性變數也相應失效。但有時候我們需要在兩次呼叫之間對變數的值進行儲存。
通常的想法是定義乙個全域性變數來實現。但這樣一來,變數已經不再屬於函式本身了,不再僅受函式的控制,給程式的維護帶來不便。
靜態區域性變數正好可以解決這個問題。靜態區域性變數儲存在全域性資料區,而不是儲存在棧中,每次的值保持到下一次呼叫,直到下次賦新值。
靜態區域性變數有以下特點:
1.該變數在全域性資料區分配記憶體;
2.靜態區域性變數在程式執行到該物件的宣告處時被首次初始化,即以後的函式呼叫不再進行初始化;
3.靜態區域性變數一般在宣告處初始化,如果沒有顯式初始化,會被程式自動初始化為0;
4.它始終駐留在全域性資料區,直到程式執行結束。但其作用域為區域性作用域,當定義它的函式或語句塊結束時,其作用域隨之結束。
啊a5:
return語句一般與函式的返回值有關係,不妨將其分成void型和非void型兩大類進行討論總結
1.對於void型:其可以沒有return語句,函式執行到函式體的結束標誌右大括號時會自動停止,或者可以有return,但是其後不跟任何表示式,表示執行到此處時返回。
2.對於非void型:其必須有return語句,並且return後表示式應與返回值的形式一樣,不一樣時就會進行自動型別轉換(會導致資料不準確),執行return時,系統將自動生成無名變數用來儲存,接受該值,函式的生命週期結束後,該空間立即被釋放
a6:乙個例子=w=
#include
intfun
(int i)
intmain()
printf
("%d"
,i);
return0;
}
其答案為:2,6,42,3
前三個答案是i在迴圈裡進行計算和表達
最後乙個是輸出了主函式定義裡的i的值,也可以說的上是迴圈了幾次。
本菜雞的總結結束勒!
C語言查漏補缺
char a 2 20 a 1 hello 這是錯誤的。c語言把這語句解釋為乙個指標與另乙個指標之間的 非法的 賦值運算。但是在初始化時,char a 2 20 是允許的。對於字串陣列,可以使用 法1 char strs 2 strs 1 hello 法2 char strs 2 20 strcpy...
c語言查漏補缺 指標
1,表示式 p 和 優先順序相同,結合方向自右向左,因此等價於 p 也就是先得到p所指向的變數值 p 再使p p 1。注意區別 p 先取得當前p所指向的變數值,再使p指向後乙個變數,相當於a i p 先取得當前p所指向的變數值,再使p指向前乙個變數,相當於a i p 先使p指向後乙個變數,再取得當前...
c語言基礎查漏補缺
該部分只是用來記錄c語言模糊的知識點 以下寫法錯誤 char c 123 char c1 哦 1.作用 用來計算乙個變數或者乙個常量 一種資料型別所佔的記憶體位元組數。2.基本形式 sizeof 變數 常量 int size sizeof a sizeof 變數 常量 int size sizeof...