大學(xué)C語言入門到底怎么學(xué)才可以走捷徑
大學(xué)C語言入門到底怎么學(xué)才可以走捷徑
學(xué)習(xí)方法
C語言是計算機體系結(jié)構(gòu)的基礎(chǔ),很多新人將C語言作為學(xué)習(xí)計算機的入門語言。作為新入門的新人,肯定會感到迷茫,很混亂,這時我們就需要適當?shù)囊龑?dǎo)。對于一門語言的學(xué)習(xí),不同的人有不同的方法,不過別人好的學(xué)習(xí)方法我們是可以拿來借鑒參考的。
(1)看書
看書就是學(xué)習(xí)基礎(chǔ)知識,學(xué)習(xí)一門語言首先就是學(xué)習(xí)基本語法,學(xué)會了基礎(chǔ)知識才能有更加深入的發(fā)展。除了看一些書籍之外,還可以看一些教學(xué)視頻入門,畢竟別人講解演示學(xué)起來更加輕松一點。后文我也會推薦一些好的學(xué)習(xí)書籍和視頻,供大家參考學(xué)習(xí)。
(2)敲代碼
想要學(xué)習(xí)好一門計算機語言,光看書籍學(xué)習(xí)知識點是遠遠不夠的。在學(xué)習(xí)知識點的同時一定要自己敲代碼進行練習(xí)。開始學(xué)習(xí)敲代碼的時候可以用一些輕便的編譯器,比如Dev C++,熟練了之后可以使用Visual Studio這些較為大型的編譯器。感覺基礎(chǔ)知識掌握熟練之后,就可以開始接觸算法和數(shù)據(jù)結(jié)構(gòu)之類的,再然后就可以刷題提高水平了。
(3)練習(xí)項目
學(xué)習(xí)完基礎(chǔ)知識我們的目的還是實踐,所以我們就可以開始練習(xí)一些項目了。比如寫一個小的記事本、小游戲、計算器等經(jīng)典的小項目。平時面對那些黑框框肯定會感覺到很枯燥無聊,當你做出一個小作品之后,你就會很有成就感,這也會極大的提升你的學(xué)習(xí)興趣。
學(xué)習(xí)路線
學(xué)習(xí)一門語言先了解此語言的發(fā)展史,早期的C語言功能其實較為簡單,隨著應(yīng)用和場景的變化,C語言的功能在不斷升級變化,功能也越來越強大。正式學(xué)習(xí)C語言之前了解一下計算機系統(tǒng)的組成以及工作原理也是很有必要的,除此之外還包括數(shù)據(jù)在計算機內(nèi)部的存儲方式,以及進制之間的轉(zhuǎn)換。
另外很重要的一點就是編譯環(huán)境和編譯器的學(xué)習(xí),學(xué)習(xí)之初可以選擇一些簡單易上手的編譯器,隨著不斷深入學(xué)習(xí)選擇一個與時俱進的編譯器也是很重要的。學(xué)習(xí)完這些內(nèi)容之后,我們就可以開始學(xué)習(xí)C語言基礎(chǔ)知識了。C語言編程離不開數(shù)據(jù),幾乎所有的程序中都會涉及到數(shù)據(jù),其中包含整型、浮點型、字符串等等。而C語言中存在著兩種表征數(shù)據(jù)的形式:常量和變量。常量可以用來表示數(shù)據(jù)的值,變量不僅可以用來表示數(shù)據(jù)的值,還可以用來存放數(shù)據(jù)。變量是用來存放數(shù)據(jù),運算符則是用來處理數(shù)據(jù)。用運算符將變量和常量連接起來的符合C語言語法規(guī)則的式子稱為表達式。
學(xué)習(xí)完這些之后,就開始接觸結(jié)構(gòu)化程序設(shè)計語句。C語言基本控制結(jié)構(gòu)有三種,分別是順序控制、循環(huán)控制、選擇控制。程序總是為解決某個實際問題而設(shè)計的,而問題往往包含多個方面,不同的情況需要有不同的處理,所以這些結(jié)構(gòu)化程序語句在實際應(yīng)用程序中可以說是無處不在,正確掌握結(jié)構(gòu)化程序設(shè)計語句顯得尤為重要。
如果用基本數(shù)據(jù)類型來定義某些變量,那么這些變量在內(nèi)存中將占用各自的內(nèi)存單元,變量之間的制約關(guān)系無法體現(xiàn),不能表現(xiàn)出這些變量之間的關(guān)聯(lián)性,所以我們把這些變量稱為“離散變量”;但是如果我們需要操作100個或者是更多的數(shù)呢,定義100個變量就顯得不太現(xiàn)實,這時我們就引入了數(shù)組。數(shù)組是一組同類型的數(shù)據(jù)項的有序集合,我們就可以把100個要定義的變量存放到數(shù)組中。
學(xué)習(xí)指針是學(xué)習(xí)C語言最重要的一環(huán),能否正確地理解和使用指針是掌握C語言的一個標志,可以說不懂C語言的指針就不懂什么是C語言。指針也是C語言中最難學(xué)的一部分,學(xué)習(xí)時除了要正確理解基本概念,還必須要多編程,多上機敲代碼,只要做到這些,指針也是不難掌握的。
前面介紹的都是簡單的數(shù)據(jù)類型,只能定義一些簡單的數(shù)據(jù)信息。對于復(fù)雜的數(shù)據(jù)信息是無法用前面所學(xué)的某個單一數(shù)據(jù)來定義的,必須使用C語言中提供的復(fù)雜數(shù)據(jù)類型來定義。復(fù)雜數(shù)據(jù)類型是C語言提供的不同于簡單數(shù)據(jù)類型的又一數(shù)據(jù)類型,它極大地豐富了C語言對數(shù)據(jù)信息的處理能力。
C語言基礎(chǔ)
第一部分是C語言基礎(chǔ),包括預(yù)處理指令、函數(shù)、變量和語句。即使是編寫最簡單的C語言程序,也是會用到這些基本概念。用一個經(jīng)典的c語言程序,介紹c語言的基本構(gòu)成、格式,使我們對c語言有個初步認識。
#include //頭文件,是C語言系統(tǒng)中特有的文件
int main() //主函數(shù)
{
printf(“Hello World!”); //主函數(shù)體
return 0; //返回值
}
一個C語言程序只有一個主函數(shù),程序執(zhí)行時從主函數(shù)開始,在主函數(shù)內(nèi)結(jié)束;函數(shù)由函數(shù)說明和函數(shù)體兩部分構(gòu)成;函數(shù)說明部分包含了對函數(shù)名,函數(shù)類型,函數(shù)參數(shù)等的定義和說明;函數(shù)體包含了變量說明和執(zhí)行語句。
2選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)
C語言中有三大結(jié)構(gòu),分別是順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。
C語言順序結(jié)構(gòu)就是讓程序按照從頭到尾的順序依次執(zhí)行每一條C語言代碼,不重復(fù)執(zhí)行任何代碼,也不跳過任何代碼。
C語言選擇結(jié)構(gòu)也稱分支結(jié)構(gòu),就是讓程序“拐彎”,有選擇性的執(zhí)行代碼;換句話說,可以跳過沒用的代碼,只執(zhí)行有用的代碼。
C語言循環(huán)結(jié)構(gòu)就是讓程序“殺個回馬槍”,不斷地重復(fù)執(zhí)行同一段代碼。順序結(jié)構(gòu)很好理解,無需過多闡述,簡單概述一下選擇語句和循環(huán)語句。
其中有兩個選擇語句,if語句和switch語句。
if(表達式)
{
語句1;
}
else
{
語句2;
}
switch(表達式)
{
case常量1:語句1; break;
case常量2:語句2; break;
case常量3:語句3; break;
default:語句n+1;break;//(此處break可有可無)
}
循環(huán)語句有三種,for循環(huán)語句,while循環(huán)語句,do……while循環(huán)語句。
//for語句
for(語句1;條件表達式;語句2)
{
循環(huán)體
}
//while語句
while(條件表達式)
{
循環(huán)體
}
//當循環(huán)條件表達式為真(即給定的條件成立),就執(zhí)行循環(huán)體語句。
//do…while語句
do{
語句
}while(條件表達式)
//循環(huán)條件和while循環(huán)條件一致。
3數(shù)組
數(shù)組就是一列具有相同類型的數(shù)據(jù)的集合,這些數(shù)據(jù)在內(nèi)存中依次挨著存放,彼此之間沒有縫隙。C語言數(shù)組屬于構(gòu)造數(shù)據(jù)類型。一個數(shù)組可以分解為多個數(shù)組元素,這些數(shù)組元素可以是基本數(shù)據(jù)類型或是構(gòu)造類型。因此按數(shù)組元素的類型不同,數(shù)組又可分為數(shù)值數(shù)組、字符數(shù)組、指針數(shù)組、結(jié)構(gòu)數(shù)組等各種類別。數(shù)組分為一維數(shù)組和二維數(shù)組,當數(shù)組中每個元素都只帶有一個下標時,稱這樣的數(shù)組為一維數(shù)組,一維數(shù)組實質(zhì)上是一組相同類型數(shù)據(jù)的線性集合。二維數(shù)組本質(zhì)上是以數(shù)組作為數(shù)組元素的數(shù)組,即“數(shù)組的數(shù)組”。
//一維數(shù)組定義格式:
type name[size];
//例如:
int mark[5];
//一維數(shù)組的初始化
//(1)對數(shù)組全部元素
int a[4]={0,1,2,3};
//(2)對部分元素賦值
int a[4]={2,3};
//(3)int a[]={1,2,3}等價于 int a[3]={1,2,3};
//二維數(shù)組定義格式:
//類型標識符數(shù)組名[行常量表達式] [列常量表達式];
//例如:
int a[3][4],b[3][5];
//二維數(shù)組的初始化
int a[][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int a[][4]={{1},{0,3},{8}};
4函數(shù)
每個C程序都至少有一個函數(shù),即主函數(shù) main(),如果程序的任務(wù)比較簡單,全部的代碼都寫在main()函數(shù)中,但是,在實際開發(fā)中,程序的任務(wù)往往比較復(fù)雜,如果全部的代碼都寫在main()函數(shù)中,main()函數(shù)將非常龐大繁雜,結(jié)構(gòu)混亂。我們可以根據(jù)程序的邏輯和任務(wù)的分工把代碼劃分到不同的自定義函數(shù)中,main()函數(shù)更關(guān)心業(yè)務(wù)邏輯和處理流程,需要執(zhí)行具體任務(wù)的時候,調(diào)用其他的自定義的函數(shù)就可以了。引入函數(shù)得本質(zhì)就是把一個復(fù)雜的任務(wù)分解為子任務(wù),每一個子任務(wù)都是一個較小的功能模塊,通過實現(xiàn)這些小功能模塊來實現(xiàn)復(fù)雜的問題,從而使得比較復(fù)雜的問題變得簡單。
/*類型標識符函數(shù)名(數(shù)據(jù)類型參數(shù)[數(shù)據(jù)類型參數(shù)......])
{
說明語句部分;
可執(zhí)行語句部分;
}*/
//例如:
int max(int a,int b)
{
int m;
m=(a>b?a:b)
}
main()
{
int x,y,k;
scanf("%d%d",&x,&y);
k=max(x,y);
printf("%d",k);
}
5指針
沒學(xué)指針就是沒學(xué) C語言!指針是 C語言的精華,也是 C語言的難點,破解 C語言指針,會讓你的 C語言水平突飛猛進。所謂指針,也就是內(nèi)存的地址;所謂指針變量,也就是保存了內(nèi)存地址的變量。不過,人們往往不會區(qū)分兩者的概念,而是混淆在一起使用,在必要的情況下,大家也要注意區(qū)分。關(guān)于指針我們需要重點學(xué)習(xí)的內(nèi)容有指針與地址、指針與函數(shù)參數(shù)、指針與數(shù)組、指針數(shù)組以及指向指針的指針和指向函數(shù)的指針等等。
6結(jié)構(gòu)體
C語言結(jié)構(gòu)體從本質(zhì)上講是一種自定義的數(shù)據(jù)類型,只不過這種數(shù)據(jù)類型比較復(fù)雜,是由 int、char、float等基本類型組成的。你可以認為結(jié)構(gòu)體是一種聚合類型。結(jié)構(gòu)體部分重點學(xué)習(xí)包括結(jié)構(gòu)體的定義方法、結(jié)構(gòu)體的引用方法、結(jié)構(gòu)體數(shù)組、結(jié)構(gòu)體指針的概念及應(yīng)用、結(jié)構(gòu)體與函數(shù)。
在實際開發(fā)中,我們可以將一組類型不同的、但是用來描述同一件事物的變量放到結(jié)構(gòu)體中。例如,在校學(xué)生有姓名、年齡、身高、成績等屬性,學(xué)了結(jié)構(gòu)體后,我們就不需要再定義多個變量了,將它們都放到結(jié)構(gòu)體中即可。
struct Student{ //聲明結(jié)構(gòu)體
char name[20]; //姓名
int num; //學(xué)號
float score; //成績
};
struct Student stu1; //定義結(jié)構(gòu)體變量
學(xué)習(xí)視頻
現(xiàn)在網(wǎng)絡(luò)如此發(fā)達,網(wǎng)上的學(xué)習(xí)資源也是非常的豐富。大家可以自行上網(wǎng)查找適合自己的學(xué)習(xí)視頻。C語言基礎(chǔ)理論知識講解完善;循序漸進,從易到難,學(xué)習(xí)很輕松;語言組織嚴謹,風(fēng)趣,很容易接受,讓你有一直學(xué)下去的動力。