糯米文學吧

位置:首頁 > 計算機 > C語言

C語言的基本要點

C語言1.27W

摘要】:本文主要提C語言的幾個基本點,從而為C語言學習者提供便捷的學習方法。

C語言的基本要點

  0, 逗號表達式:

int a=(b=1,c=2,d=3);printf("%d",a) //a=3

整個逗號表達式的值等於最後一個子表達式的值。

  1、 條件表達式:exp1?exp2:exp3

a、條件表達式的優先級高於賦值運算

b、條件表達式的結合方向是自右向左(先計算右邊的表達式)

c、exp2和exp3不僅可以是數值表達式,還可以是賦值或函數表達式。如a>b?(a=100):(b=200);或a>b?(printf("%d",a)):(printf("%d",b));

d、exp1,exp2,exp3的類型可以不一樣。如x?'a':'b';x>y?1:1.5

  2、閏年的條件:

if((year%400==0)||(year%4==0&&year%100!=0))leap = 1;else leap=0;

  3、多維數組:

a、二維數組的存放順序:按行存放。

b、多維數組在內存中的'排列順序:最右邊的下標變化最快。

  4、C語言變量類型

a、按存儲形態分

i 靜態變量(全局變量和static修飾的變量,存於內存的靜態存儲區,在編譯區被初始化,程序的執行期間一直有值)

ii 動態變量(聲明在"{}"之間的變量和形參,存於內存的動態存儲區的棧空間,動態分配空間,函數調用結束內存回收)

b、按作用域分

i 內部變量(作用域僅限於"{}"內)

ii 外部變量(作用域:從聲明處到文件結束,在其它文件中使用extern聲明外部變量還可以把作用域擴展到該文件中)

a+b、

i 靜態內部變量(內部變量的作用域沒變,只是程序執行期間一直有值)

ii 靜態外部變量(該外部變量只屬於本文件,無法使用extern擴展作用域)

  5、函數類型

a、內部函數(使用static修飾,只能被本文件中的其它函數調用)

b、外部函數(使用extern修飾或不用修飾,可以被其它文件中的函數調用)

  6.循環結構

for循環結構是c語言中最具有特色的循環語句,使用最為靈活方便,它的一般形式為:for(表達式1;表達式2;表達式3)循環體語句 。(其中;不能省略)表達式表達式1為初值表達式,用於在循環開始前為循環變量賦初值。表達式2是循環控制邏輯表達式,它控制循環執行的條件,決定循環的次數。表達式3為循環控制變量修改表達式,它使for循環趨向結束。循環體語句是在循環控制條件成立的情況下被反覆執行的語句。但是在整個for循環過程中,表達式1只計算一次,表達式2和表達式3則可能計算多次,也可能一次也不計算。循環體可能多次執行,也可能一次都不執行。先執行表達式2,然後執行循環結構,最後表達式3,一直這樣循環下去。for循環語句是c語言種功能最為強大的語句,甚至在一定程度上可以代替其他的循環語句。

do循環結構,do 1 while⑵;的執行順序是1->2->1...循環,2為循環條件。

while循環結構,while(1) 2; 的執行順序是1->2->1...循環,1為循環條件以上循環語句,當循環條件表達式為真則繼續循環,為假則跳出循環。

  關於指針和指針變量

指針

指針及內存地址。對於32位機來説,內存地址需要32bit也就是4Byte的二進制數來表示,所以指針是一個4Byte的二進制數。

指針變量

用於存儲指針的變量,也就是説指針變量的內容是一個內存地址是一個4Byte的二進制數。無論指針變量指向的是什麼類型的數據,它的值永遠只會是一個4Byte的二進制內存地址。

存儲的內容都是長度一樣的內存地址,那為什麼聲明的時候還要寫明該指針變量的類型呢?我們知道不同類型的數據在內存中佔用的字節數是不一樣的,所以通過指針訪問數據時

指針變量移動的步長也是不一樣的。例如:一個指針變量p指向了某整型數組的第一個元素a[0],此時我想用這個指針變量p來訪問a[1]時只需要將p+1也就是*(p+1)就能取得a[1]的

值。我們在編碼的時候讓p+1而實際上內存地址移動了4個字節(一個整型數據所佔的內存空間),也就是説p+i代表內存地址要移動p+i*c(c為p指向數據類型所佔的內存空間的字節數),

所以如果指針變量沒有類型的話遇到這種情況時內存地址就不知道該移動多少字節才能正確訪問到一下數據。

標籤:語言