三、巨集定義與型別重定義
四、變數的作用域與生命週期
五、常量
六、轉義字元
七、語句、操作符、關鍵字
八、 陣列
九、指標
十、 函式
若輸入的字串是中間帶有空格的,建議使用gets()和puts()來獲取和列印字串,因為sanf("%s",&a)它是以空格作為結束符的,一旦遇到空格則停止鍵盤獲取。
strlen 是函式,extern usigned int strlen (char* s) 引數必須是字元型指標。計算有效字元的長度,不包含』\0』。關心多少長的資料
#include
`char str;
int leng;
leng=
strlen
(str)
;
sizeof 是運算子,sizeof(type_name)。 計算字串佔的記憶體大小,包含』\0』。關心多大空間
int arr=
;int leng;
leng=
sizeof
(arr)
/sizeof
(int
);
注意:sizeof()計算的是占用空間的大小,單位是byte,strlen()計算的是字串有效長度。
char arr1=
"abc"
;char arr2=
;strlen
(arr1)
;//3
strlen
(arr2)
;//隨機值,字串是以\0作為結束標誌,arr2無結束標誌
sizeof
(arr1)
;//4byte
sizeof
(arr2)
;//3byte
不帶引數的巨集定義:#define 識別符號 字串
帶引數的巨集定義:#define 巨集名 (形參表) 字串
引用巨集的一般形式:巨集名(實參表)
#define pi 2.1415926
//不帶引數的巨集定義
#define s(r) pi*(r)*(r)
//帶引數的巨集定義
void
main()
typedef語句定義格式:typedef 型別名 新型別名;
細節注意:#define 後沒有分號, typedef 語句 後面必須加上分號,因為它是語句。
當區域性變數和全域性變數同名時,優先使用區域性變數
作用域:一段程式**中所用到的名字並不總是有效/可用的,而限定這個名字的可用性的**範圍就是這個名字的作用域。
生命週期:變數的建立到變數的銷毀之間的乙個時間段
c語言中的常量分為以下以下幾種:
轉義字元
解釋\?
在書寫連續多個問號時使用,防止他們被解析成三字母詞
\'
用於表示字元常量 』
\\
用於表示乙個字串內部的雙引號
\a
用於表示乙個反斜槓,防止它被解釋為乙個轉義序列符
\b
警告字元,蜂鳴
\f
退格符
\n
進紙符
\r
換行
\t
回車
\v
水平製表符
\v
垂直製表符
\ddd
ddd表示1-3個八進位制的數字,eg: \130 (八進位制中最大數是7)
\xddd
xddd表示3個十六進製制的數字,eg: \x0a0 (十六進製制中最大數是f)
選擇語句:if語句,if else語句, if的多分支語句,switch case 語句
迴圈語句:for語句,while語句,do while語句
//if語句
if(表示式)
語句;//if else 語句
if(表示式)
語句1;
else
語句2;
//if 的多分支語句
if(表示式1
) 語句1;
else
if(表示式2
) 語句2;
else
語句3;
//switch case 語句
switch
(整型表示式)
//for語句
for(表示式1;表示式2;表示式3
) 迴圈語句;
//while語句
while
(表示式)
//do while 語句
dowhile
(表示式)
關鍵字static:在c語言中,static可以用來修飾變數和函式。修飾區域性變數 -> 靜態區域性變數;修飾全域性變數 -> 靜態全域性變數;修飾函式 -> 靜態函式。
建立陣列時需要注意: [ ]中要給乙個常量才可以,若在建立陣列是不想指定陣列的大小就得初始化。
陣列未初始化,則陣列中為隨機值
陣列完全初始化,則初值為定義的值
陣列部分初始化,則陣列中其餘的初值為0
總結:
int arr[10]
;int sz=
sizeof
(arr)
/sizeof
(arr[0]
);
(1) sizeof(陣列名),sizeof內部單獨放乙個陣列名,陣列名表示整個陣列(2) &(陣列名),取出的是整個陣列的位址,陣列名表示整個陣列除此之外,所有陣列名都表示陣列首元素的位址野指標就是指標指向的位置是不可知的(隨機的、不正確的、沒有明確限制的)指標變數在定義時如果未初始化,其值是隨機的,指標變數的值是別的變數的位址,意味著指標指向了乙個位址是不確定的變數,此時去解引用就是去訪問了乙個不確定的位址,所以結果是不可知的。
野指標的成因:
如何規避野指標:
返回值型別 函式名 (函式引數)
實參 --> 形參
形參在函式呼叫過程中才例項化 ,當函式呼叫完成之後就會自動銷毀
形參在例項化之後,相當於實參的乙份臨時拷貝
●傳值呼叫
函式的實參和形參分別占用不同的記憶體塊,對形參的修改不會改變實參的值
●傳址呼叫
傳址呼叫是把實參的記憶體位址傳遞給函式形參的一種函式呼叫的方式,建立真正的聯絡。
●巢狀呼叫
在乙個函式體當中呼叫另乙個函式,函式和函式的有機組合
●鏈式訪問
把乙個函式的返回值作為另外乙個函式的引數,舉例:
#include
intmain()
//result:4321
遞迴:程式自己呼叫自己。核心:把大事化小。遞迴有兩個必要條件是
● 存在限制條件。當滿足這個限制條件的時候,遞迴便不再繼續
● 每次遞迴呼叫之後越來越接近這個限制條件
注意:在使用遞迴時需要注意遞迴深度,避免 stack overflow
大學必備C語言基礎知識(一)
c語言基礎知識 簡單實用,適合上手。一 c 語言標頭檔案 1.include iostream 的意思是輸入輸出流。include是標準的c 標頭檔案,任何符合標準的c 開發環境都有這個標頭檔案。2.include fstream是c stl中對檔案操作的合集,包含了常用的所有檔案操作。最常用的兩種...
大學必備C語言基礎知識(三)
六 c c 輸出 標準檔案 c 語言把所有的裝置都當作檔案。所以裝置 比如顯示器 被處理的方式與檔案相同。以下三個檔案會在程式執行時自動開啟,以便訪問鍵盤和螢幕。標準檔案 檔案指標 裝置 標準輸入 stdin 鍵盤 標準輸出 stdout 螢幕 標準錯誤 stderr 您的螢幕 1.printf 和...
大學必備C語言基礎知識(四)
七 c c 運算子 運算子不僅具有不同的優先順序,還有不同的結合性。在表示式中,各運算量參與運算的先後順序不僅要遵守運算子優先順序別的規定,還要受運算子結合性的制約,以便確定是自左向右進行運算還是自右向左進行運算。1 運算子分類 運算子 說明 算術運算子 用於各類數值運算。包括加 減 乘 除 求餘 ...