當前位置:成語大全網 - 書法字典 - 學習C語言需要掌握哪些基礎知識?

學習C語言需要掌握哪些基礎知識?

1.入口程序

# include & ltstdio.h & gt

int main()

{

printf(“Hello World!”);

返回0;

}

2.數據類型

數據類型:

1.基本數據類型:

1.1.整數:int 4字節。

1.2.字符類型:char 1字節。

1.3.實數類型(浮點類型)

1.3.1.單精度類型:浮點4字節。

1.3.2.Double:雙8字節。

2.結構類型:

2.1.枚舉類型

2.2.數組類型

2.3.結構類型

2.4.***用戶類型

3.指針類型:

4.空類型:

3.打印格式聲明

%d:十進制整數;

%c:單個字符;

%s:字符串;

%f:6位小數;

# include & ltstdio.h & gt

int main()

{

int age = 18;

浮動高度= 1.85;

char unit =‘m‘;

Printf(“小明今年%d歲\n“,年齡);

Printf(“小明的身高%f%c\n“,身高,單位);

Printf(“小明正在大規模開放在線課程中在線學習IT技術\ n“);

返回0;

}

學好C++是加入大廠的敲門磚!如果我有這門課,我的C++就不會這樣了。

已經過期?

4.常數

其值不變的量成為常數;

定義壹個字符常量(註意沒有以下內容;)

# include & ltstdio.h & gt

#define POCKETMONEY 10 //定義常數和常數值。

int main()

{

Printf(“小明今天又得到了%d零花錢\n“,pocket money);

返回0;

}

5.經營者

5.1.算術運算符:+、-、*、/、%、++、-;在++/-之前,先運算,再取值。++/-之後,先取值,再運算;

5.2.賦值運算符:

5.3.關系運算符;

5.4.邏輯運算符;

5.5.三方運營商:

表情1?表達式2:表達式3;

6.水仙花數量的計算

輸出所有三位數的水仙花數字。

所謂“水仙號”是指壹個三位數,其位數的立方和等於這個數。例如,153是水仙花的數字,而111+555+333。

# include & ltstdio.h & gt

int main()

{

//定義三位數num、壹位數sd、十位數td和百位數hd。

int num、sd、td、HD;

//循環所有三位數

for(num = 100;num & lt1000 ;num++)

{

//獲取三位數num的第壹百位數字

HD = num/100;

//獲取三位數num的第十位數字。

TD = num/10% 10;

//獲取三位數的num位上的數字

SD = num % 10;

//水仙花數量的條件是什麽?

if(num = = HD * HD * HD+TD * TD * TD+SD * SD * SD)

{

Printf(“水仙花號:%d\n“,num);

}

}

返回0;

}

7.打印正三角形*

# include & ltstdio.h & gt

int main()

{

int i,j,k;

for(I = 1;我& lt5;i++)

{

/*觀察每行的空格數並完成循環條件*/

for(j = I;j & lt5 ;j++)

{

printf(“”);//輸出空格

}

/*觀察每行中*的數量並完成循環條件*/

for(k = 0;k & lt2 * I-1;k++)

{

printf(“*“);//每行輸出的*號

}

printf(“\ n“);//每次都在循環中換行

}

返回0;

}

8.臭名昭著的goto語句

很少使用

# include & ltstdio.h & gt

int main()

{

int sum = 0;

int I;

for(I = 1;我& lt=10;i++)

{

printf(“% d \ n“,I);

if(I = = 3 ){

goto循環;//滿足條件時執行goto語句。

}

}

//執行goto

LOOP:printf(“for循環結束。。。“);//請選擇適當的位置添加標識符。

返回0;

}

9.實參數的正式參與

形參:形參是定義函數名和函數體時使用的參數,用於在調用函數時接收傳入的參數;

Argument: Argument是調用時傳遞的函數的參數。

函數的形參和實參具有以下特征:

參數僅在被調用時分配內存單元,並在調用結束時釋放分配的內存單元。因此,形參只在函數內部有效。函數調用結束並返回到tonic函數後,參數變量就不能再使用了。

參數可以是常量、變量、表達式、函數等。無論它們是哪種量,在進行函數調用時都必須有確定的值,以便將這些值傳遞給形式參數。因此,我們應該事先使用賦值等方法來獲得實參數的確定值。

在傳遞參數時,實際參數和形式參數在數量、類型和順序上應嚴格壹致,否則會出現類型不匹配的錯誤。

10.函數返回值的註釋

註意:void函數可以有執行代碼塊,但不能有返回值。此外,如果void函數中有return語句,則只能結束函數。其格式為:返回;

11.遞歸

# include & ltstdio.h & gt

int getPeachNumber(int n)//在這裏定義n,否則編譯器會報錯!

{

int num

如果(n==10)

{

返回1;

}

其他

{

num =(getPeachNumber(n+1)+1)* 2;

Printf(“第%d天剩下%d個桃子“,n,num);

}

返回編號;

}

int main()

{

int num = getPeachNumber(1);

Printf(“猴子在第壹天摘了%d個桃子。\n“,num);

返回0;

}

12.可變存儲類別!

12.1.生命周期分割存儲模式

根據變量的生命周期,C語言可以分為靜態存儲和動態存儲。

靜態存儲模式:指程序運行時分配固定存儲空間的模式。靜態存儲區存儲整個程序執行過程中存在的變量,如全局變量。

動態存儲模式:指在程序運行過程中根據需要動態分配存儲空間的模式。存儲在動態存儲區的變量是根據程序運行的需要而建立和釋放的,通常包括:函數參數;自動變量;調用函數時的現場保護和返回地址。

12.2.存儲類型劃分

C語言中有四類存儲:自動、靜態、寄存器和外部。

由關鍵字auto定義的變量是自動變量,可以省略auto。如果沒有寫auto,則隱式定義為“自動存儲類別”,屬於動態存儲模式。

用靜態修飾的是靜態變量。如果是在函數內部定義的,則稱為靜態局部變量。如果在函數外部定義,則稱為靜態外部變量。

註意:靜態局部變量屬於靜態存儲的範疇,存儲單元分配在靜態存儲區中,在程序整個運行期間不會釋放;靜態局部變量在編譯時被賦予初始值,也就是說,它們只被賦予壹次初始值;如果在定義局部變量時沒有指定初始值,對於靜態局部變量,初始值會在編譯時自動指定為0(對於數值變量)或空字符(對於字符變量)。

為了提高效率,C語言允許將局部變量的值放在CPU中的寄存器中,這些寄存器稱為“寄存器變量”,並用關鍵字register聲明。

註意:只有局部自動變量和形參可以用作寄存器變量;計算機系統中寄存器的數量是有限的,因此不可能定義任何數量的寄存器變量。局部靜態變量不能定義為寄存器變量。

用extern聲明的變量是外部變量,外部變量的意義是函數可以調用在函數之後定義的變量。

# includ & ltstdio.h & gt

//來源微信官方賬號:C語言與CPP編程

int main()

{

//定義外部局部變量

extern int x;

返回0;

}

int x = 100;

13.內部函數外部函數!

在C語言中不能被其他源文件調用的函數稱為內部函數,內部函數由靜態關鍵字定義,因此也稱為靜態函數,其形式為:

靜態【數據類型】函數名(【參數】)

這裏的Static是對函數作用域的限制,只能在函數所在的源文件中使用,所以函數名相同的內部函數出現在不同的文件中是沒有問題的。

在C語言中,可以被其他源文件調用的函數稱為外部函數,外部函數由extern關鍵字以如下形式定義:

外部【數據類型】函數名(【參數】)

c語言規定,當壹個函數的作用域沒有指定時,系統默認會認為它是壹個外部函數,因此在需要定義外部函數時也可以省略extern。可以省略Extern14.數組數組:具有固定大小和壹致數據類型的連續內存空間。數組的聲明:數據類型數組名稱【長度n】

數據類型數組名稱【長度n】= { element 1,element 2,element 3,...};

數據類型數組名稱【】= {element 1,element 2,element 3...};

數字類類型數組名稱【長度n】;數組名【0】=元素1;數組名【1】=元素2;.....註意:1和數組的下標都以0開頭;2.初始化數組時,數組中元素的數量不能大於聲明的數組長度;3.如果采用第壹種初始化方法,當元素個數小於數組長度時,將冗余數組元素初始化為0;4.當數組在聲明後未初始化時,static和extern類型的數組元素的初始化元素為0,auto類型的數組元素的初始化值不確定。

15.數組遍歷

# include & ltstdio.h & gt

int main()

{

int arr【】= { 0,1,2,3,4,5,6,7,8,9 };

int I;

for(I = 0;我& lt10;i++)

{

printf(“% d \ n“,arr【I】);

}

返回0;

}

數組的冒泡排序

冒泡排序的思想是:將相鄰的元素相互比較,將較大的數字放在後面,直到所有的數字都排序完畢。

字符串和數組

在C語言中,沒有辦法直接定義substring的數據類型。您需要使用數組來定義所需的字符串,格式如下:

Char字符串名稱【length】=“字符串內容“;

Char字符串名稱【length】= {‘String 1‘,‘String 2‘,...,“String n“,“\ 0“};

註意:

【】中的長度可以省略;

第二種方式,最後壹個元素必須是“\0”,表示結束;

第二種方式不會寫中文!;輸出字符串時,使用:printf(“% s“,字符數組名);或puts(字符數組名);

16.串函數

獲取字符串s的長度;

strcmp(s 1,s2):比較字符串;比較時,字符串將被轉換為ASCII代碼,然後進行比較。返回結果為0,這意味著s1和s2的ASCII碼值相等。返回結果是1,這意味著s1大於s2的ASCII碼,返回結果是-1,這意味著s 1小於s2的ACSII碼。

strcpy(s 1,s2):字符串復制;S2將替換s1中的內容;

strcat(s1,s2)在s 1後面拼接S2;註意:s1的長度應該夠了!

atoi(s 1)將字符串轉換為整數!

17.多維數組

數據類型數組名稱【常量表達式1】...【常量表達式n】;

多維數組的初始化與壹維數組類似,有兩種類型:

數據類型數組名稱【常數表達式1】【常數表達式2】...【常量表達式n】= { { value 1,...,值n},{值1,...值n},...,{ value 1,...,值。

數據類型數組名稱【常數表達式1】【常數表達式2】...【常量表達式n】;數組名稱【下標1】【下標2】...【下標n】=值;

多維數組初始化應註意以下事項:

當采用第壹次初始化時,數組聲明必須指定列的維度。因為系統會根據數組中元素的總數來分配空間,所以當元素總數和列的維數已知時,將直接計算行程的維數;

使用第二次初始化時,數組聲明必須指定行和列的維度。

18.多維數組的遍歷

使用嵌套循環

註意:多維數組的每個壹維下標不能越界!

19.結構

C array允許您定義可以存儲相同類型數據項的變量。結構是C編程中另壹種用戶定義的可用數據類型,它允許您存儲不同類型的數據項。

結構用於表示記錄。假設您想要跟蹤圖書館中圖書的動態,您可能需要跟蹤每本書的以下屬性:

標題

作者

科目

圖書ID

定義結構

為了定義結構,必須使用struct語句。struct語句定義了壹個具有多個成員的新數據類型。struct語句的格式如下:

結構標記{

成員列表

成員列表

會員名單?

...

}變量列表;

標記是壹個結構標記。

Member-list是標準的變量定義,比如int I;、或float f、或其他有效的變量定義。

變量列表結構變量定義在結構的末尾,在最後壹個分號之前,您可以指定壹個或多個結構變量。以下是圖書結構的申報方式:

結構書

{

夏爾。標題【50】;

夏爾。作者【50】;

夏爾。主題【100】;

int?book _ id

}書;

在正常情況下,必須至少有兩個標記,成員列表和變量列表部分。以下是壹些例子:

//此聲明聲明了壹個具有三個成員的結構,即壹個整數A、壹個字符B和壹個雙精度c。

//同時聲明了結構變量s1。

//此結構未標記。

結構體

{

int a;

char b;

雙c;

} s 1;

//此聲明聲明了壹個具有三個成員的結構,即壹個整數A、壹個字符B和壹個雙精度c。

//結構的標記名為SIMPLE,沒有聲明任何變量。

簡單結構

{

int a;

char b;

雙c;

};

//標記為SIMPLE的結構,並聲明了變量t1、t2和t3。

struct SIMPLE t1,T2【20】,* t3

//還可以用typedef創建新類型。

typedef結構

{

int a;

char b;

雙c;

} Simple2

//現在可以用Simple2類型聲明新的結構變量。

Simple2 u1,U2【20】,* u3

訪問結構成員

為了訪問壹個結構的成員,我們使用成員訪問操作符(。).成員訪問操作符是結構變量名稱和我們要訪問的結構成員之間的句點。您可以使用struct關鍵字定義結構類型的變量。下面的示例演示了結構的用法:

# include & ltstdio.h & gt

# include & ltstring.h & gt

//來源微信官方賬號:C語言與CPP編程

結構書

{

夏爾。標題【50】;

夏爾。作者【50】;

夏爾。主題【100】;

int?book _ id

};

int main()

{

struct Books Book1;/*申報圖書1,圖書類型*/

結構書第二冊;/*聲明Book2,類型為Books */

/* Book1詳細信息*/

strcpy(book 1 . title,“C編程“);

strcpy(book 1 . author,“Nuha Ali“);

strcpy(book 1 . subject,《C編程教程》);

book 1 . book _ id = 6495407;

/*第二冊詳細信息*/

strcpy(book2 . title,“電信計費”);

strcpy(book2 . author,“Zara Ali”);

strcpy(book2 . subject,“電信計費教程”);

Book2.book _ id = 6495700

/*輸出Book1信息*/

printf(“Book 1 title:% s \ n“,Book 1 . title);

printf(“Book 1 author:% s \ n“,Book 1 . author);

printf(“Book 1 subject:% s \ n“、Book 1 . subject);

printf(“Book 1 Book _ id:% d \ n“,Book 1 . Book _ id);

/*輸出第二冊信息*/

printf(“book2 title:% s \ n“,book2 . title);

printf(“book2作者:%s\n“,book2 . author);

printf(“book2主題:%s\n“,book2 . subject);

printf(“Book 2 Book _ id:% d \ n“,Book 2 . Book _ id);

返回0;

}

學好C++是加入大廠的敲門磚!如果我有這門課,我的C++就不會這樣了。

已經過期?

20.***動詞

* * *對象是壹種特殊的數據類型,它允許您在同壹內存位置存儲不同的數據類型。您可以定義壹個包含多個成員的* * *主題,但任何時候都只能有壹個成員有值。* * *主體提供了使用相同內存位置的有效方法。

# include & ltstdio.h & gt

# include & ltstring.h & gt

工會數據

{

int I;

浮動f;

夏爾。str【20】;

};

int main()

{

union Data數據;

printf(“數據占用的內存大小:%d\n“,sizeof(data));

返回0;

}

21.指針

# include & ltstdio.h & gt

int main()

{

int?var = 20?/*實際變量的聲明*/

int?* ip/*指針變量的聲明*/

ip = & ampvar?/*將變量的地址存儲在指針變量中*/

printf(“變量的地址:%p\n“,& ampvar?);

/*指針變量中存儲的地址*/

printf(“IP變量中存儲的地址:%p\n“,IP);

/*使用指針訪問值*/

printf(* IP變量的值:%d\n“,* IP);

返回0;

}

22.文件讀寫

寫文件

# include & ltstdio.h & gt

int main()

{

FILE * fp = NULL

FP = fopen(“/tmp/test . txt“,“w+“);

這是對fprintf的測試...\ n ");

fput(“這是對fput的測試...\n“,FP);

fclose(FP);

}

讀取文件

# include & ltstdio.h & gt

int main()

{

FILE * fp = NULL

char buff【255】;

FP = fopen(“/tmp/test . txt“,“r“);

fscanf(FP,“%s“,buff);

printf(“1:% s \ n“,buff);

fgets(buff,255,(FILE *)FP);

printf(“2:% s \ n“,buff);

fgets(buff,255,(FILE *)FP);

printf(“3:% s \ n“,buff);

fclose(FP);

}

C語言與C++學習路線

23.分類算法

十大經典排序算法(動態演示+代碼)

24.搜索算法

九種搜索算法

面試知識

C語言與C++面試知識總結

26.字處理

字符串操作的全面總結

27.?C語言通用標準庫解讀

C語言通用標準庫解讀

28.C語言中最常用的貪婪算法

C語言中最常用的貪婪算法就這樣被攻克了。

29.常見的C語言內存錯誤及對策

C語言中常見的內存錯誤及其對策

30.c語言實現了面向對象的原則。

c語言實現了面向對象的原則。

31.C語言/C++內存管理

看完這篇文章妳還能理解C語言/C++內存管理嗎?

32.再談C語言指針

再來說說指針:老大哥給妳掃清C指針的雲。

c語言函數指針的回調函數

C語言指針詳解(文末福利)

33.c語言預處理命令

長文本詳解:C語言預處理命令

34.C語言的高效編程和代碼優化

C語言的高效編程和代碼優化

35.c語言結構

C語言的結構就這樣被攻克了!值得收藏!

36.原碼、補碼、補碼詳解

原碼、補碼、補碼詳解

37.c語言宏定義

淺談C語言中宏定義的使用

38.* * *在C語言中使用聯合、枚舉和大小端模式。

C語言中* * *的並集、枚舉和大小端模式