1、強制類型轉換表達式:(數據類型) (表達式)
2、C語言的頭文件:C語言的頭文件中包括了各個標準庫函數的函數原型。因此,凡是在程序中調用一個庫函數時,都必須包含該函數原型所在的頭文件。
表達式:#include stdio.h
3、break是跳出當前整個循環,continue是結束本次循環開始下一次循環。
4、goto語句是一種無條件分支語句.
5、自定義函數:
A、[] 包含的內容可以省略,默認是 int 類型函數; 函數還有很多叫法,比如方法、子例程或程序,等等。
B、返回類型:一個函數可以返回一個值。return_type 是函數返回的值的數據類型。有些函數執行所需的操作而不返回值,在這種情況下,return_type 是關鍵字 void。
return返回的函數值的類型和函數定義中函數的類型應保持一致。如果兩者不一致,則以函數返回類型爲準,自動進行類型轉換。
return_type function_name( parameter list )
{
body of the function
}
6、
形參是在定義函數名和函數體的時候使用的參數,目的是用來接收調用該函數時傳入的參數。
實參是在調用時傳遞該函數的參數。
形參只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參只有在函數內部有效。
實參可以是常量、變量、表達式、函數等。
7、變量存儲類別
C語言根據變量的生存週期來劃分,可以分爲靜態存儲方式和動態存儲方式。
靜態存儲方式:是指在程序運行期間分配固定的存儲空間的方式。靜態存儲區中存放了在整個程序執行過程中都存在的變量,如全局變量。
動態存儲方式:是指在程序運行期間根據需要進行動態的分配存儲空間的方式。動態存儲區中存放的變量是根據程序運行的需要而建立和釋放的,通常包括:函數形式參數;自動變量;函數調用時的現場保護和返回地址等。
C語言中存儲類別又分爲四類:
A、用關鍵字auto定義的變量爲自動變量,auto可以省略,auto不寫則隱含定爲“自動存儲類別”,屬於動態存儲方式。如:
B、用static修飾的爲靜態變量,如果定義在函數內部的,稱之爲靜態局部變量;如果定義在函數外部,稱之爲靜態外部變量。如下爲靜態局部變量:
注意:靜態局部變量屬於靜態存儲類別,在靜態存儲區內分配存儲單元,在程序整個運行期間都不釋放;靜態局部變量在編譯時賦初值,即只賦初值一次;如果在定義局部變量時不賦初值的話,則對靜態局部變量來說,編譯時自動賦初值0(對數值型變量)或空字符(對字符變量)。
C、爲了提高效率,C語言允許將局部變量得值放在CPU中的寄存器中,這種變量叫“寄存器變量”,用關鍵字register作聲明。例如:
注意:只有局部自動變量和形式參數可以作爲寄存器變量;一個計算機系統中的寄存器數目有限,不能定義任意多個寄存器變量;局部靜態變量不能定義爲寄存器變量。
D、用extern聲明的的變量是外部變量,外部變量的意義是某函數可以調用在該函數之後定義的變量
8、內部函數與外部函數
在C語言中不能被其他源文件調用的函數稱謂內部函數 ,內部函數由static關鍵字來定義,因此又被稱謂靜態函數,形式爲:
static [數據類型] 函數名([參數])
這裏的static是對函數的作用範圍的一個限定,限定該函數只能在其所處的源文件中使用,因此在不同文件中出現相同的函數名稱的內部函數是沒有問題的。
在C語言中能被其他源文件調用的函數稱謂外部函數 ,外部函數由extern關鍵字來定義,形式爲:
extern [數據類型] 函數名([參數])
C語言規定,在沒有指定函數的作用範圍時,系統會默認認爲是外部函數,因此當需要定義外部函數時extern也可以省略。
9、什麼是指針
指針是一個變量,其值爲另一個變量的地址,即,內存位置的直接地址。就像其他變量或常量一樣,您必須在使用指針存儲其他變量地址之前,對其進行聲明
所有指針的值的實際數據類型,不管是整型、浮點型、字符型,還是其他的數據類型,都是一樣的,都是一個代表內存地址的長的十六進制數。不同數據類型的指針之間唯一的不同是,指針所指向的變量或常量的數據類型不同。
參考:https://blog.csdn.net/qq_41035588/article/details/79673674
int main ()
{
int var = 20; /* 實際變量的聲明 */
int *ip; /* 指針變量的聲明 */
ip = &var; /* 在指針變量中存儲 var 的地址 */
printf("Address of var variable: %x\n", &var );
/* 在指針變量中存儲的地址 */
printf("Address stored in ip variable: %x\n", ip );
/* 使用指針訪問值 */
printf("Value of *ip variable: %d\n", *ip );
return 0;
}
10、宏定義
宏定義和全局變量的區別:
1. 宏會在預處理階段被替換,而全局變量是在運行時;
2. 宏定義不分配內存,全局變量定義需要分配內存;
3. 宏不區分數據類型,它本質上是一段字符,在預處理的時候被替換到引用的位置,而全局變量區分數據類型;
4. 宏定義之後值是不能改變的,全局變量的值是可以改變的;
5. 宏定義只有在定義所在文件,或引用所在文件的其它文件中使用。 而全局變量可以在工程所有文件中使用,只需在使用前加一個聲明。
參考:https://www.cnblogs.com/little-ant/p/3463080.html
https://www.cnblogs.com/jiajuanjuan0521/p/3391104.html
https://www.cnblogs.com/mobius2018/p/9843403.html
11、預處理器:C 預處理器不是編譯器的組成部分,但是它是編譯過程中一個單獨的步驟。簡言之,C 預處理器只不過是一個文本替換工具而已,它們會指示編譯器在實際編譯之前完成所需的預處理。我們將把 C 預處理器(C Preprocessor)簡寫爲 CPP。https://www.w3cschool.cn/c/c-preprocessors.html