<kbd id="daqct"></kbd>

  • <nav id="daqct"></nav>
    <wbr id="daqct"><pre id="daqct"></pre></wbr>
    <wbr id="daqct"></wbr>
    <form id="daqct"><th id="daqct"></th></form>
    更多課程 選擇中心

    C/C++培訓
    達內IT學院

    400-111-8989

    初學C語言必須掌握的75個知識點

    • 發布:網絡
    • 來源:網絡
    • 時間:2018-03-07 10:14

    1、C語言中整數默認為INT型,兩個整數相除(如1/2)結果仍然是整數,要得到帶小數點的答案則要改成1.0/2

    2、在C語言中,“=”是賦值運算符,表示把某個值賦給某個變量(X=0即把0值賦給X變量);“==”是關系運算符,表示“等于”(X==0即X等于0),在編寫C程序時要注意區分。

    3、1個字節等于8位二進制(某整形數據按照2字節在內存中分配空間,即該數據對應的二進制形式是16位二進制);在ASCⅡ碼中,英文字母(不分大小寫)、英文標點占一個字節,中文漢字、中文標點占兩個字節。

    4、基本運算符的優先等級------(PS:手機無法顯示部分符號)“!”than算術運算符(+/-/*)than關系運算符than邏輯運算符than賦值運算符(=);要想從C菜鳥變成C老手,一些基本的優先等級是必須知道的(C運算符的優先等級詳見附錄C)

    5、關于putchar函數------putchar函數即字符輸出函數,表示向輸出設備(顯示器)輸出一個字符。無論用戶輸作何種輸入,函數都只會輸出字符(putchar(65)輸出結果是“A”,putchar(?65?)輸出結果是“65”);putchar函數可以通過輸出控制字符,讓程序執行某種指令(putchar(?\n?)則程序會執行換行指令)。

    6、教材在介紹格式符的章節里有不準確的地方(見P33)------d格式符、s格式符、f格式符的介紹里,“m”應是最少輸出位數(書上的描述是“總位數”):%md,%ms,%mf,分別對應------輸出最少m位整型數據,m位字符串,m位浮點數,位數不足時左補空格。

    7、對于我們來說,C語言不僅是一門必修課。現代人類生活中所用的幾乎每件電子和機械產品中都會集成有單片機,單片機的前景是很廣闊的(有興趣的同學可以向老師咨詢或者上網了解),要設計出現代化的電子產品無疑要懂得用單片機。單片機的運行全靠程序,不把程序設計學好如何談得上使用?所以,希望各位能夠重視C語言這門課程。

    8、定義變量時不能使用賦值語句。”int i=j=k=0;”這種定義方法有誤,要正確定義變量并對變量進行初始化,則應修改成“int i=0,j=0,k=0;”(順帶提醒一下,每個語句的結尾都應該添上“;”)

    9、關于if語句------“if()”括號里面輸入的數據或表達式是其判定條件,只要數據或表達式對應的值非零,便會執行if語句之后的語句,反之不執行。(如語句“if(a=0)”,具體是把0值賦給a,括號里的數值是0,則不執行if語句之后的內容)

    10、基礎知識鞏固------結構化程序設計的三種基本結構:順序結構、選擇結構、循環結構;算法的4種表示方式:自然語言、偽碼、流程圖、N-S圖。對于一些基礎的C語言知識最好能夠做到心中有數,不僅是為了鞏固基礎,這些內容以后考試也會涉及到的。

    11、強制類型轉換------運用強制轉換運算符可以實現對變量的數據類型進行轉換,強制轉換運算符的格式為“(類型名)”,如(int),是其中一種強制轉換運算符。(int)x+y------只對變量x進行強制轉換;(int)(x+y)------對x+y的值進行強制轉換。

    12、條件運算符------運算優先等級低于關系運算符,高于賦值運算符。條件運算符的結合性是自右至左,使用時有以下技巧:第一個條件運算符的“:”后面的內容加上括號(手機無法正常顯示例子,詳見P46中條件運算符的介紹)。

    13、利用關系運算符對字符和數據進行比較時,要先將字符轉換成對應的ASCⅡ值。如“if(A==65)”,要先將A轉換成對應的ASCⅡ值(65),再和65進行比較。

    14、continue語句和break語句的使用:continue語句的作用只是跳過該次循環,轉而進入下一次循環條件的判斷,并不會中止整個循環;break語句只能用在switch語句和循環體內,在循環體內的作用是直接終止整個循環體,不再進行任何循環條件判斷和執行循環體內的語句。

    15、對于無符號變量,二進制的最高位代表數據的最高位;對于有符號變量,二進制的最高位數代表數據的符號位,僅用來決定數據是正數還是負數,在進行反碼、補碼運算時不參與運算。

    16、使用case語句時一定要在case后面加空格(如“case 1”),否則系統會把case與常量表達式一同識別為一個標識符(如“case1”,是一個標識符);case后面一定要是一個常量表達式,不能是關系表達式或者別的表達式------常量表達式,必須的~

    17、字符與字符,字符與數據均可以通過關系表達式進行比較。進行比較時,字符先轉換成對應的ASCⅡ值。(if(A>B)先把A、B分別轉換成65、66;if(65>B)先把B轉換成66)

    18、邏輯運算符“非”(“!”)------書上說的原值取反并非取相反數。邏輯“非”的運算法則中,“取反”是“取反義值”:對非0值取0(如“!2”等于0,代表“假”),對0取非0值(如“!0”等于1,代表“真”);凡是非0值都能代表“真”,C語言中的“真”默認用數值“1”來表示(即當運算結果為“真”時對應的數值是1)。

    19、循環結構中要讓變量進行自增或自減時,既可以使用前綴自增自減(如++i,--i),也可以使用后綴自增自減(如i++,i--),互換兩種增減方式對循環結構不造成影響,編寫C程序時可按照自己的個人習慣進行選擇。(由于自增自減在循環結構中一般是獨立語句,所以可以互換)

    20、編譯器在求解邏輯表達式的值時,采用“非完全求解”的方法,并不是所以的邏輯運算符都被執行,只有在需要執行下一個邏輯運算才能求出表達式的解時,才繼續運算(如“0&&2&&3”,0代表假,后兩個表達式不必判斷,運算立即終止)

    21、goto語句------goto語句的作用是無條件轉向“語句標號”處執行(如“ibm:x=a”中,“ibm:”即為“語句標號”);“語句標號”僅僅對goto語句有效,“語句標號”后面的語句在程序中照樣會執行,也就是說“語句標號”不影響其后語句的執行,只是一個標記;因為無條件轉向使程序結構無規律、可讀性差,一般應避免使用goto語句,除非它能大幅提高程序的執行效率。

    22、1、強烈建議大家在寫復雜程序之前先把算法寫出來!!!!!!(一般來說,采用流程圖來寫算法比較方便)2、while語句------條件符合時執行語句,直到不符合條件;do-while語句------先執行語句,再進行判定,條件符合時繼續執行語句。兩種“while”語句要視實際情況來使用。

    23、用printf來輸出浮點型數據時,一般格式為【printf(“%f”,浮點型變量或浮點型常量)】,系統默認輸出的浮點數有6位小數,如果需要增加或減少輸出的小數位數,可以利用格式【printf(“%.nf”, 浮點型變量或浮點型常量)】,其中的n表示了輸出的浮點數的小數位數。(PS:用格式【printf(“%lf”, 浮點型變量或浮點型常量)】無法改變小數位數)

    24、如果被調函數的返回值是整型或字符型,可以不對被調函數進行聲明,而直接調用。這時,系統將自動對被調函數的返回值按整形處理。(也就是說,在沒有對函數返回值進行定義的情況下,系統默認為整型量)

    25、關于無參函數------一般情況下,無參函數沒有返回值,此時函數類型標識符可以寫為void,向系統表明該函數將不會返回任何值。此外需要說明的是,如果要定義帶返回值的無參函數,也是可以的。(無參函數也可以有返回值,不過一般情況下讓它有返回值也沒多大意義)

    26、形參變量只有在函數被調用時才分配內存單元,在調用結束時,便會釋放所分配的內存單元。因此,形參只在本函數內部有效,函數調用結束返回主調函數后則不能再使用該形參變量了。(也就是說,形參變量在使用過后便會“消失”)

    27、關于函數參數------把某個函數A作為另一個函數B的實際參數時,必須保證A函數有返回值【如sqrt(sum(a,b)),sum函數必須有返回值】;如果在A函數內,B函數和C函數同時充當A函數的實際參數,則按照自右向左的順序求值(當求值順序會影響函數結果時就要注意這一點)。【如printf(“%d,%d”,sum(a,b),sqrt(c)),先計算sqrt函數的值】

    28、“void”是其中一個C語言關鍵字,用來對函數類型進行聲明,表明函數不會有返回值;被“void”聲明了的函數不能用來給變量賦值,因為函數是沒有值的。

    29、主函數放最后的話,可以不用進行函數聲明(如“void fun(long)”,是一個函數聲明);如果主函數不是放在最后,要保證所有函數在main函數出現之前已經聲明了函數類型和形參變量類型。

    30、初學者編寫函數時的常見錯誤:Ⅰ、函數體的花括弧或復合語句的花括弧不配對;Ⅱ、調用函數時,實參與形參在個數、類型以及順序上不匹配;Ⅲ、調用庫函數時忘記# include語句,調用自定義函數時忘記進行函數聲明。(其中第三點是最常見的錯誤,記得調用庫函數時要加頭文件)

    31、主函數中定義的變量只能在主函數中使用,不能在其他函數中使用。同時,主函數中也不能使用其他函數中定義的變量。主函數也是一個函數,雖然被稱作“主函數”,但實際上它與其他函數是平行關系,應予以注意。

    32、關于全局變量------1.它不屬于哪一個函數,它屬于一個源程序文件;2.其作用域是整個源程序(在哪個函數哪個復合語句中都能取用);3.所有全局變量的儲存位置都是靜態儲存區。

    33、全局函數建議盡量少用,原因:1.全局變量在程序的全部執行過程中都占用著存儲單元;2.降低函數的獨立性,繼而降低程序的可靠性,同時也不利于將來程序的移植(最主要的原因,用太多的全局變量會導致函數移植后難以獨立使用);3.使用過多的全局變量,會使程序的可讀性降低,人們往往難以明確判斷各個時刻各變量的取值。

    34、關于自動變量(auto)------函數中的局部變量,如不專門聲明為static存儲類別,都是動態地分配存儲空間的,數據存儲在動態存儲區中,函數中的形參變量和在函數中定義的局部變量(包括在復合語句中定義的變量)都屬此類,在調用這種函數時系統會自動給他們分配空間,在函數調用結束時將自動釋放這些空間。(最大的特點是函數調用完畢后會“消失”)

    35、#include------文件包含指令,一個include命令只能指定一個被包含文件(也就是說,要包含多個文件,則需要用多個include命令);文件包含允許嵌套,即在一個被包含的文件中還可以包含另一個文件。

    36、寄存器變量------為了提高效率,C語言允許將頻繁使用的局部變量的值存放到CPU的寄存器中,這種變量成為“寄存器變量”,用關鍵字register來聲明;會“消失”的變量才可以作為寄存器變量(如局部自動變量、形參變量);寄存器變量的數目是有限的,不能任意定義。

    37、靜態局部變量------靜態局部變量儲存在靜態儲存區;如果不給靜態局部變量賦初值,則系統自動賦其0值;靜態局部變量只能進行一次初始化(即賦初值,如“int x=0”)

    38、關于無參數宏------無參數宏可以用來替代常數和表達式;無參數宏的定義必須在函數外,作用域為自宏定義命令起到源程序結束(定義之后就能用到最后);宏定義后面不用加分號。

    39、關于帶參數宏------帶參數宏在進行替換時,保留函數中的實參(可以理解成把宏替換掉后再將實參“放回去”);定義帶參數宏時,為了避免程序在執行過程中出現副作用,需要加兩重括號:第一重括號加在形參上,第二重括號加在整個字符串上(如“#define M(x) ((x)*(x))”)

    40、關于指針型變量------指針型變量只能存放變量的地址,賦值時只能賦予地址;未經賦值的指針變量不能使用(有可能導致死機);定義指針時的類型說明符:表示了指針型變量指向的變量的數據類型(可記成“指向類型”)。

    41、數組和指針型變量的聯系------數組名是一個地址,可以把數組名賦予指針型變量(假設p是指針型變量,執行語句“p=a”后,p指向數組a的第一個元素a[0]);若已經把數組名賦予指針型變量,則指針型變量可以通過加減運算改變其對數組a的指向(執行語句“p=a;p=p+2;”后,p指向數組a的第三個元素a[2])。

    42、指針變量的初始化------指針變量必須進行初始化才能使用,一般格式有兩種,一種是同時進行類型說明和賦值(如int *p=&x;),一種是把類型說明和賦值分開進行(如int *p;p=&x;),初始化必須包括類型說明和賦值。

    43、指針運算符------符號為“*”,作用是返回一個指針所指向的對象的值。(如“int *p=&x;i=*p;”,語句“i=*p;”在執行時先執行指針運算符,把p指向的變量x的值調出來,然后把該值賦給變量i)

    44、對指針變量進行賦值------定義兩個指針變量p1,p2,“int *p1=&x,*p2=&y”,當執行語句“p1=p2”時,p2的值對應的是y的地址,把該值賦予p1,則此時p1的值也會變成y的地址;當執行語句“*p1=*p2”時,p2指向的變量y的值會被賦予p1指向的變量x。

    45、如果要把指針變量p指向數組a的第一個元素,可以使用下面的語句:“p=&a[0];”,或“p=a;”兩種賦值方式是完全等效的。(這里的“a”就是“a[0]”的地址)

    46、關于空指針------空指針不同于未賦值的指針變量,空指針可以使用而未賦值的指針變量不能;空指針不指向任何變量,對應的值是0(假設p是一個空指針,則有p==0)。

    47、二維數組的兩種賦值------設p是指針變量,a是一個二維數組,運行語句“p=a”后,p指向二維數組的第一行;運行語句“p=a[0]”后,p指向二維數組的第一行第一個元素a[0][0]。

    48、二維數組行指針和列指針------假設a[i][j]是一個二維數組,則“a+m”指向二維數組的第m行,是一個行指針;*(a+m)是一個列指針,指向第m行第0列(控制由行轉為列,但仍為指針);*(*(a+m))是數組元素a[m][0]的值。

    49、函數中的指針變量------函數中的指針變量用來對主函數中的變量進行運算,這是指針變量在函數中的重要應用;關于數組名------數組名是數組第一個元素的首地址,它不是一個變量,不能對其數值進行更改;

    50、調用形參為指針類型的函數時,注意要保證函數內新增添的指針變量已經進行定義和初始化,并且要在運行程序之前做好檢查,確保調用函數時沒有對無關地址的內容進行修改,這樣便能避免嚴重后果的發生。(運用指針進行編程確實需要小心謹慎)

    51、字符串及其操作------對字符變量進行賦值時使用的必須是一對單引號,使用雙引號來賦值屬于非法操作;C語言中空字符用?\0?來標識,此處的?\0?實際上是指八進制的0。

    52、指向指針的指針------指針變量也有自己對應的地址,這個地址儲存的是指針變量的值(具體為另外某個變量的地址);可以把指針變量(假設是P1)的地址值賦予另外一個指針變量(假設是P2),則此時P2指向P1,P2是一個指向指針的指針。

    53、關于字符數組------字符型與整型互相通用,因此int a[i]也可以定義為字符數組。但兩種類型分配的字節不同,用整型來定義會浪費空間,另外這樣定義的實際意義也不大,這里只是為了說明其合法性。(不知道考試會不會涉及到這種內容所以給大家提點一下)

    54、字符串連接函數strcat()------用于把兩個字符串連接在一起,組成一個字符串。用法如下:strcat(str1,str2),其中str1和str2是兩個字符串,該函數把str2連接在str1中的字符串后面,并刪除原來str1后面的空字符。使用該函數須保證str1能夠儲存連接后的長字符串。

    55、字符串比較函數strcmp(str1,str2)------按照字符的ASCⅡ值,對兩個字符串自左向右逐個字符比較大小,直到遇到不同字符或同時遇到空字符為止。同時遇到空字符時函數的返回值為0;遇到不同字符時,比較兩個字符的ASCⅡ值,當屬于str1的那個字符的ASCⅡ值較大時,函數的返回值大于0,較小則函數返回值小于0。

    56、字符串copy函數strcpy(str1,str2)------該函數的作用是把某個字符串數組的內容復制到另外一個字符串數組中。執行strcpy函數后,則str1中的內容變成str2中的內容,使用時要保證字符串數組str1有一定的長度,足夠容納str2的內容。(三個字符串函數的用法都比較容易把握,別把函數名記錯就沒問題了)

    57、測試字符長度函數strlen(str1)------用于測試字符串的實際長度,其中不包括空字符,str1可以是字符串或字符數組。(靈活調用各種字符串處理函數能夠實現許多不同的功能,希望大家能夠熟練掌握)

    58、結構體和結構體變量的定義------結構體的定義方式:struct 結構體名{成員表;},成員表中的各個部分必須包括成員類型及成員名;結構體變量的定義方式:struct 結構體名 結 構體變量,結構體變量可以有多個,各個變量之間用逗號間隔開來。

    59、結構體和結構體變量的定義(2)------一共有三種方法:1、定義結構體,再定義結構體變量;2、定義結構體類型的同時定義結構體變量;3、利用無結構體類型名定義變量(第一種和第二種比較常用,由于篇幅的限制,具體的定義形式詳見教材p152——p153。PS:三種定義方法都有提及到結構體嵌套,雖然篇幅很少,但也要注意一下)

    60、定義了結構體變量后,系統要為變量分配內存空間。在內存中,結構體變量占有連續的一段內存空間:結構體變量占用的一段連續內存空間=結構的各成員所占用的內存空間之和。

    61、結構體數組------以結構體變量作為元素的數組即為結構體數組(PS:XX數組就是以XX變量作為元素的數組),和結構體變量的定義十分相似,結構體變量的定義方式有三種:先定義結構體,再定義結構體數組;定義結構體類型的同時定義結構體數組;利用無結構體類型名定義結構體數組。(同樣由于篇幅限制,具體定義格式詳見P156)

    62、字符串的輸入和輸出(1)-------用scanf()和printf()進行輸入和輸出字符串時,雙引號內應出現%S,輸入項處應放入字符串數組的數組名(如printf(“%s”,str1),其中str1是數組名,雖然輸出的是str1的內容,但這種格式的輸出只要放入數組名就可以了)。

    63、用puts()和gets()來進行輸入輸出字符串時,要保證括號內的是單個字符數組名(是字符數組名,而不是字符串數組名)。另外,利用puts()函數進行字符串輸出時,要保證括號內數組名對應的數組的末尾是一個空字符,否則會出現奇怪的輸出結果。

    64、成員運算符------“.”是成員運算符,在所有運算符中它的級別最高。因此,在程序中的任何地方,“結構體變量名.成員名”都是整體出現的。(也就是說,我們可以習慣地把“結構體變量名.成員名”看成一個整體)

    65、結構體指針變量------當一個指針變量用來指向一個結構體變量時,稱之為結構體指針變量;結構體指針變量的聲明:struct 結構體名 *p,“struct 結構體名”可視作一個類型說明符(int、char、float這些就是類型說明符)。

    66、結構體指針變量的含義:如果p是一個結構體指針變量,則p指向一個具有結構體名對應的結構的結構體變量(如struct student *p,此時p指向具有“student”結構的結構體變量)。

    67、指向運算符------利用結構體指針引用結構體成員時,一般會用到指向運算符;指向運算符擁有最高的優先級別(和成員運算符是同一個優先級別的),結合方向從左到右;設sp是一個結構體指針,指向一個名為stu結構體變量,則有如下對應關系:*sp=stu,(*sp).(成員名)=stu. (成員名)=sp->(成員名)

    68、動態鏈表的特點------能夠實現在程序運行的過程中開辟新的內存空間或者釋放舊的內存空間;可以看作是由一條條鏈和一個個節點交替形成的鏈式結構,其中的節點就是結構體變量;后一節點的地址會存放在前一節點,則可以實現通過前一節點訪問后一節點,這就是節點之間的關聯,也就是節點的“鏈”。

    69、關于exit()函數------exit()函數的作用是直接終止程序,一般情況下括號里放的是0,當程序執行到語句“exit(0);”時,程序就會終止執行。

    70、動態鏈表的建立(思路)------1.先建立一個表頭,作為鏈表的首節點,作用是標記鏈表的位置,表頭一般不用來儲存數據;2.利用malloc()函數建立新的節點,把節點的地址存在表頭的鏈域;循環進行該步驟即可建立出任意長度的鏈表。

    71、共同體變量------1.定義共同體變量與定義結構體變量的方式極其相似,此處不作贅述,詳見P174;2.共同體變量的最大特點是能夠自由更改變量的數據類型,我們可以把共同體變量理解成一個能夠變換類型的變量。

    72、typedef語句------作用是建立一個等效字符串,這個等效字符串能夠代替某個類型說明符進行類型說明,簡言之,typedef語句的作用是為某個類型說明符起別名;(例:執行語句“typedef int AA;”后,“AA”能夠代替int對變量進行類型聲明,如“AA x;”)

    73、左移運算符<<:屬于雙目運算符,格式是“變量名<<操作數”,操作數決定了變量移位的位數,變量移位后在右側補0

    74、右移運算符>>:屬于雙目運算符,格式是“變量名>>操作數”,操作數決定了變量移位的位數,變量移位后,如果變量原來是負數則在最高位補1,否則補0

    75、”字符串” 表示的是字符串的首地址,?字符?表示字符的ASCII碼

    預約申請免費試聽課

    填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

    上一篇:年薪10萬+的C/C++工程師需掌握哪些技能?
    下一篇:學C++要學好C語言編程的四個知識點

    C語言創建windows窗口實例

    C++回調函數是什么?

    C++ shared_ptr和動態數組

    C語言有哪些關鍵詞,C語言44個關鍵詞大全

    • 掃碼領取資料

      回復關鍵字:視頻資料

      免費領取 達內課程視頻學習資料

    • 視頻學習QQ群

      添加QQ群:1143617948

      免費領取達內課程視頻學習資料

    Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

    選擇城市和中心
    黑龍江省

    吉林省

    河北省

    湖南省

    貴州省

    云南省

    廣西省

    海南省

    欧美三级片,白洁外传,第四色播日韩AV第一页,啪啪免费观看大全av 百度 好搜 搜狗
    <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>