00 C語言重要知識點複習

2021-09-22 02:15:47 字數 4599 閱讀 1782

c語言重要知識點複習

1,自加自減運算(單目運算)

說明:(1)運算物件只能是乙個變數

2++; /*error*/
(2)前置是先運算,後引用,而後置是先引用後運算

int i,x;

i = 5;

x = i++; /*x=i;i=i+1*/

i=5;

x = ++i; /*i=i+1;x=i;*/

2,運算的優先順序

(1)第一原則:單目運算的優先順序高於雙目運算

x=*p++  x=*(p++)  x=*p,p=p+1

x=*++p x=*(++p) p=p+1,x=*p

第二原則:算術運算->關係運算->邏輯運算->賦值運算

a+b>c&&c!=0  ((a+b>c)&&(c!=0))
(2)優先順序總表

級別運算子

結合順序

1() ->

從左向右

2! - ++ – (type) sizeof * &

從右向左

3* / %

從左向右

4+ -

從左向右

5<< >>

從左向右

6< <= > >=

從左向右

7== !=

從左向右8&

從左向右9^

從左向右10|

從左向右

11&&

從左向右

12||

從左向右

13? :

從右向左

14= op=

從右向左15,

從左向右

3,三種迴圈

(1)while迴圈(當型迴圈)

**格式:

​ while(條件表示式)

​ 語句;

表示式:值非0,表示滿足條件;值為0,代表不滿足條件

語句(復合語句):重複執行部分(迴圈體)

**流程圖:

**舉例:

//求s=1+2+3+4+...+100

#includevoid main(void)

printf("s=%d\n",s);

}

(2)do-while迴圈(直到型迴圈)

**格式:

​ do

​ while(條件表示式);

**流程圖:

**while迴圈與do-while迴圈的區別:

while迴圈先判斷條件,後執行迴圈體;

do-while迴圈先執行迴圈體,後判斷條件

**舉例:

//求30!

#includevoid main(void)

while(i<=30);

printf("301=%f",s);

}

(3),for迴圈

**格式:

​ for(e1;e2;e3)

​ statement;

e1:初值表示式

e2:測試表示式

e3:增值表示式

**流程:

**舉例:

//求:s=1+2+3+...+100

#includevoid main(void)

printf("s=%d",s);

}

**注意:在for迴圈中,e1,e2,e3都可以省略。

(4),無限迴圈和空迴圈

**條件為恆真的迴圈-無限迴圈

while(1)

dowhile(1);//靠條件控制的break語句退出迴圈

for( ; ; )

//例:程式等待直到輸入字母a

for(;;)

**迴圈體為空語句的迴圈-空迴圈

for(i=1;i<=max;t++);

//作用:程式延時

4,字串的比較strcmp(str1,str2)

作用:對str1和str2進行逐位無符號字元比較,直到對應位字元能夠確定關係或到串尾為止。返回整型比較結果。

字元的數值關係及是字元的ascii碼值的數值關係。

比較結果

strcmp的值

str1<0

str1==str2

==0str1>str2

>0

char str1=;

char str2=;

int ire1,ire2,ire3;

ire1=strcmp(str1,"abdc");

ire2=strcmp(str1,str2);

ire3=strcmp("abcde",str2);

5,陣列的常用演算法

陣列是同型別資料的集合。

便於整體處理資料,陣列操作的主要演算法有:

(1)求極值;

(2)排序;

(3)查詢;

6,指標

c語言的指標支援:

(1)函式的位址呼叫;

(2)動態分配記憶體;

(3)陣列的位址引用。

#include void main (void )

//int *p; *p=2; /* error!*/

(1)指標必須指向物件後,才能引用。

(2)&和*為互補運算。

7,指標與陣列

陣列是同型別的變數的集合,各元素按下標的特定順序佔據一

段連續的記憶體,各元素的位址也連續,指針對陣列元素非常方便。

(1)指標與一維陣列

通過指標引用陣列元素可以分以下三個步驟:

**說明指標和陣列

int   *p,a[10];
**指標指向陣列

p=a;        /*指向陣列的首位址*/

p=&a[0]; /*指向陣列的首位址*/

**通過指標引用陣列元素

(2)引用陣列元素

**三種方法:

下標法: a[ i ]

指標法: *(p+i)

陣列名法:*(a+i)

a=p;    /*error!*/
8,動態分配函式 ()

sizeof(x):計算變數x的長度

free§:釋放指標p所指變數的儲存空間,即徹底刪除乙個變數

9,引數傳遞

(1)函式呼叫時傳送給形參表的實參必須與形參在型別、個數、順序上保持一致

(2)引數傳遞有兩種方式

**傳值方式(引數為整型、實型、字元型等)

**傳位址

引數為指標變數

引數為陣列名

10,結構體

(1)struct 結構名;

struct book b[10]; //正確

struct  book; 

struct book b[10]; //錯誤

typedef struct book; 

book b[10]; //正確

11,結構指標

方式一:(*p).成員項名

方式二: p->成員項名

typedef struct lnodelnode,*linklist;   

// *linklist為lnode型別的指標

lnode *p  linklist p
12,總結

(1)從編譯器的角度理解c語言的語法規則和處理資料的方式

•int x,y,*p;(符號表,變數先定義後使用,定義後有記憶體單元)

•語句的語法,如賦值語句:x=a+b;(正確) a+b=x;(錯誤)

•#define n 5; (後面有分號錯誤,因為n會被定義為「5;」)

•函式呼叫通過棧,函式內的區域性變數作用域,函式引數傳遞

•在不同的函式中試圖改變乙個資料,可以通過:

函式return

指標全域性變數

(2)從機器執行的角度理解演算法,將演算法描述逐句變為程式

•依次: 迴圈(for,while),注意迴圈變數的初值和終值

•比較或分情況:分支(if,switch)

•移動:賦值(後移a[i+1]=a[i]; 前移:a[i-1]=a[i];)

•交換:三條賦值

•記錄或儲存變數的值:一條賦值

•對於鍊錶,常用的三條語句如下:

p=l->next;         //p指向首元結點

while(p!=null) //p未到表尾

p=p->next; //p指向下乙個結點

另外,指標保留技術:

q=p;p=p->next;

c語言重要知識點1

在c語言語言裡面比較重要的知識點有函式 指標 變數 函式 在函式這乙個知識點裡面需要注意的是 1 函式表示式的正確規範的表達形式 void display int num,char p,a,void link int date 等類似的形式 但是其中最主要的有一點需要記住那就是 函式的形參和返回值一...

C語言重要知識點總結(一)

最近重新看了下c語言,發現先前學習的時候很多的重點都被忽略了,現在回頭看發現了很多以前沒有注意的東西,所以寫部落格記錄下,方便以後可以參考查詢。變數的儲存類別 c語言中變數的儲存類別有auto,register,extern和static。下面將對以下四個儲存類別進行詳細的介紹 auto 自動變數,...

C語言重要知識點回顧

太久沒有看c語言相關知識了,開始要整理回顧一些重點知識點啦,因為各大公司筆試還是有許多c語言相關的題,做個複習。普通指標使用 普通指標使用,我們通過 i 或者 p 指標都能改變變數值 void test1 輸出結果 這個結果是我們好理解的。接著 const int p 問題 const int p ...