c語(yǔ)言學(xué)習(xí)筆記_第1頁(yè)
c語(yǔ)言學(xué)習(xí)筆記_第2頁(yè)
c語(yǔ)言學(xué)習(xí)筆記_第3頁(yè)
c語(yǔ)言學(xué)習(xí)筆記_第4頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余71頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Windows下使用gcc的條件:1、必須安裝gcc2、修改環(huán)境變量3、gcc-V查看版本4、打開qt,創(chuàng)建空項(xiàng)目Helloworld程序.頭文件包含Include.main函數(shù),程序的入口,每個(gè)程序只有一個(gè)main函數(shù)3{)函數(shù)都是在{}里面包著呢.注釋、注釋標(biāo)準(zhǔn)C++的注釋/?多行注釋?/標(biāo)準(zhǔn)c的注釋注釋是程序的說(shuō)明,跟程序的運(yùn)行沒(méi)關(guān)系.printfPrintf是c語(yǔ)言的庫(kù)函數(shù),使用庫(kù)函數(shù)之前需要#include<stdio.h>.聲明Inti;聲明了一個(gè)變量,名字叫i,類型為int;Int是c語(yǔ)言的關(guān)鍵字,類型不能隨便更改,但是變量名可以隨便更改定義變量只能是字母數(shù)字下劃線,不能數(shù)字開頭不能用關(guān)鍵字作為變量名Scanf函數(shù)從標(biāo)準(zhǔn)輸入讀取用戶輸入,按照格式描述把讀入的信息轉(zhuǎn)換為指定數(shù)據(jù)類型的數(shù)據(jù),并把這些數(shù)據(jù)賦給指定的程序變量,一般形式為:scanf(格式控制字符串,地址列表)地址列表中,取地址運(yùn)算符&:&a&用于指明在內(nèi)存中的位置Printf(講ー些信息按照指定的格式送到標(biāo)準(zhǔn)輸出(顯示器))Printf(格式控制字符串,輸出列表)格式字符串將,就技整依形式イ換?出,サ應(yīng)格式字符串將,就技整依形式イ換?出,サ應(yīng)?敷應(yīng),nt炎々]?出ー個(gè)字符.對(duì)應(yīng),數(shù)應(yīng)諜是ー個(gè)字符?出ー個(gè)字幵?對(duì)應(yīng),奴>2?出ー個(gè)字符.對(duì)應(yīng),數(shù)應(yīng)諜是ー個(gè)字符?出ー個(gè)字幵?對(duì)應(yīng),奴>2叫一個(gè)字符事將?裁揍帶小敷點(diǎn)敷形式?出,"應(yīng)?感巨量double夷N?默認(rèn)情況下懵磷到6位小數(shù)表達(dá)式和運(yùn)算符山常量/變量/函數(shù)運(yùn)算符組合起來(lái)的式子稱為表達(dá)式表達(dá)式的值和類型:表達(dá)式計(jì)算結(jié)果的值和類型運(yùn)算符:賦值運(yùn)算符,算術(shù)運(yùn)算符。。。。枚舉變量的取值個(gè)數(shù)是有限的,枚舉是把值列出來(lái)賦值運(yùn)算符:用等號(hào)鏈接的式子,變量=表達(dá)式算術(shù)運(yùn)算符:+/—ッ/加減乘除,雙目運(yùn)算符,操作數(shù)有兩個(gè)關(guān)系運(yùn)算符:<,>,<=,>=,==,!=,值為真或者假邏輯運(yùn)算符:邏輯或11/與&&/非!邏輯或:一真就真,兩假オ假邏輯與:兩真オ真,ー假俱假邏輯非:取反,原真為假,原假為真為運(yùn)算符位位運(yùn)算符用于對(duì)二進(jìn)制位操作十進(jìn)制——二進(jìn)制連除基數(shù),逆序取余條件運(yùn)算符(三目運(yùn)算符)?表達(dá)式1?表達(dá)式2:表達(dá)式3A+=i等價(jià)于a=a+i;a=1>3;〃〇代表假b=5〉2;〃1代表真printf("%d\n",a);printf(*%d\n*,b);c=a&&b;printf(*%d\n*?c);c=a||b;printf(*%d\n*?c);

按位與&:二進(jìn)制做&運(yùn)算當(dāng)〇遇到〇或者1時(shí)為0;按位或I:二進(jìn)制做或運(yùn)算,當(dāng)1遇到?;蛘?時(shí)為1;Scanned,&score);errorC4996:'scanf':Thisfunctionorvariablemaybeunsafe.Considerusingscanf_sinstead.Todisabledeprecation,use_CRT_SECURE_NO_WARNINGS.Seeonlinehelpfordetails.d:、用戶目錄、我的文檔、visualstudio2013\projects、枚舉、枚舉、枚舉.C581枚舉Linux常用命令Ls查看該當(dāng)前目錄Cd進(jìn)入指定目錄Cd..進(jìn)入上一級(jí)目錄Mkdir創(chuàng)建H錄Rmdir移除目錄(空目錄)Cat查看文件內(nèi)容(文本文件)Ln創(chuàng)建連接D文件夾一文件S管道文件L連接設(shè)備文件B塊設(shè)備文件C字符設(shè)備文件モ?匸第四章系統(tǒng)管理?reboot—用于重新啟動(dòng)操作系統(tǒng)?モ?匸第四章系統(tǒng)管理?reboot—用于重新啟動(dòng)操作系統(tǒng)?shutdovn-hnow立刻關(guān)機(jī)?shutdovn-rnov-立刻Jtg I?init〇關(guān)機(jī)?init3切換到偷?模式?init5切換到xwinders模式?inii6第一天學(xué)習(xí)總結(jié)Linux操作系統(tǒng)簡(jiǎn)介L(zhǎng)inux是免費(fèi)的,不同于Unix,Windows,Linux,Unix三中不同的銷售策略,Linux版本:內(nèi)核版和發(fā)行版,內(nèi)核版本只有,套,發(fā)行版本有很多:Ubuntu,redhat,Android用的比較多,紅旗倒閉了,用戶太少,沒(méi)有市場(chǎng)XwindowLinux圖形化桌面,可以通過(guò)鼠標(biāo)點(diǎn)擊進(jìn)行操作,區(qū)別于字符界面,只是ー個(gè)軟件,在Linux中可以沒(méi)有,只用字符界面(文本模式)常見命令Ls查看文件信息上參數(shù)一a查看所有文件-I以長(zhǎng)模式分方式查看文件命令可以符合使用d代表文件目錄ー表示文件I代表快捷方式C表示字符設(shè)備文件r代表只讀w代表寫x代表執(zhí)行用戶名,組用戶rwxrwxrwx第一個(gè)是用戶的權(quán)限第二個(gè)是組內(nèi)用戶的權(quán)限第三個(gè)是其他用戶的權(quán)限4I通配符?任意多個(gè)未知字符?任意ー個(gè)字符注意是問(wèn)號(hào)ノ轉(zhuǎn)義字符特殊含義重定向>重定向>>附加重定向,追加<管道一個(gè)命令的輸出可以通過(guò)管道作為另外一個(gè)命令的輸入more查看文件內(nèi)容,控制顯示,分屏顯示前面是輸出,作為后面的輸入cd切換工作目錄cd目錄進(jìn)入某ー目錄cd..回到上級(jí)目錄cdpwd查看當(dāng)前位置mkdir創(chuàng)建新目錄rmdirrm-rf不提示強(qiáng)カ刪除i是交互的方式刪除r是遞歸刪除In創(chuàng)建一個(gè)連接文件,類似Windows中的創(chuàng)建快捷方式連接分軟硬-s為軟連接cal查看日歷date查看日期cat查看文本文件內(nèi)容,合并文件到ー個(gè)文件〉grep查找文件grep查找內(nèi)容文件-v不包含顯示-n顯示行號(hào)-I忽略大小寫A是不是某行以什么開頭$以什么結(jié)束的行命令+參數(shù)然后是具體格式wc查看文件的行數(shù)和字?jǐn)?shù),顯示字符數(shù)find查找文件命令find./從什么地方開始找ーname名字為什么的文件a.txtcp拷貝文件cp源文件,目標(biāo)文件mv移動(dòng)文件源文件目標(biāo)位置同級(jí)目錄移動(dòng)為改名字(linux不提供單獨(dú)的改名字的命令,所以文件改名都是通過(guò)mv是實(shí)現(xiàn)的)file查看文件類型file源文件pstopkill進(jìn)程管理器查看,關(guān)掉進(jìn)程不能亂刪,root用戶的進(jìn)程是殺不了的文件壓縮,解壓命令Tar-c生成檔案文件-V列出歸檔解檔的詳細(xì)過(guò)程-cvf打包-xvf解檔Gzip壓縮linux特有格式Zip壓縮Unzip解壓Whoami查看當(dāng)前用戶名whowMan的使用幫助文檔后臺(tái)作業(yè)jobs查看后臺(tái)fg顯示在前臺(tái)ctrl+z掛起程序命令&掛起Rpm-ivhanzhuangbaoIfconfigOnlytherootusercanaddcommonuser,sowemustloginbythenameofrootuser.Sodoesthegroup.GroupaddaddgroupGroupdeldelategroupUseraddadduser-ddefinethemainfilecontent-mifthereisnomainfilecontent,thencreateoneTheusernameshouldbethesamewiththemainfilecontentindex.htmltanke.html 分享到.html 緩沖運(yùn)動(dòng).html 鍵盤控制小球移動(dòng).html數(shù)字時(shí)鐘.html坦克大戰(zhàn).html無(wú)縫滾動(dòng).html懸浮框.html延時(shí)提示.html月歷.html運(yùn)動(dòng)基礎(chǔ).html表L2常用的國(guó)外Linux資源國(guó)外網(wǎng)站說(shuō)明來(lái)自Lmux和開放源代碼界的新聞l最齊全的LmuxUNIX軟件庫(kù)信息齊全的しinux學(xué)習(xí)網(wǎng)站Lmux內(nèi)核的官方網(wǎng)站提供全方位的Linux信息(盡管不足官方網(wǎng)站)提供內(nèi)核信息和補(bǔ)丁的匯總www.Imuxtodaycom非常完整的Linux新聞?wù)军c(diǎn)表1.3常用的國(guó)內(nèi)Linux資源國(guó)內(nèi)網(wǎng)站說(shuō)明www.cmnaunixnet國(guó)內(nèi)最大的Linux/Unix技術(shù)社區(qū)網(wǎng)站wwwImuxedencomLinux伊甸園,最大的中文開源資訊門戶網(wǎng)站www.Imuxfansorg中國(guó)Linux公社,擁有自己的Linux發(fā)行版本MagicLinuxwww.I提供Linux各種資源、包括資訊、軟件、手冊(cè)等Studyresource/1inuxbasic/0120howto1inux/Q120howtolinux1.phphttp:〃www.study-area,org/network/networkfr.htmStudy-Areahttp://www.study-area,org鳥哥的私房菜館狼主的網(wǎng)絡(luò)實(shí)驗(yàn)室.tw/index,htm臥龍大師的網(wǎng)絡(luò)技術(shù)文件.tw/techdoc/大南國(guó)?。挚嗣糁魅挝募?tw/張毓麟先生的小文章.tw/^yIchang/MyDocuments/index.html臺(tái)灣Linux社群.tw/吳仁智的文件集.tw/?chihwu/第二天學(xué)習(xí)筆記Last用戶最后一次進(jìn)入系統(tǒng)的狀態(tài)相對(duì)路徑和絕對(duì)路徑Linux只有根目錄,沒(méi)有盤符的概念文件權(quán)限chmod,針對(duì)目錄執(zhí)行為進(jìn)入,沒(méi)有x無(wú)法進(jìn)入目錄ViVi配置文件vimrc第二天筆記.文件系統(tǒng)相對(duì)路徑從當(dāng)前路徑開始絕對(duì)路徑從根冃錄開始/home/itcast/abc/a.txtlinux只有一個(gè)根冃錄,沒(méi)有盤符的說(shuō)法。etc為系統(tǒng)的配置文件sbin為系統(tǒng)的命令root為超級(jí)用戶根目錄dev為系統(tǒng)的設(shè)備Linux區(qū)分大小寫,沒(méi)有擴(kuò)展名的概念,不帶掉文件類型,只是ー個(gè)標(biāo)示.文件權(quán)限chmod修改權(quán)限chgrp修改組chown修改用戶r讀w寫x執(zhí)行000000000111111111設(shè)置權(quán)限,只有root用戶可以改變權(quán)限,其他用戶只能針對(duì)自己的文件改變權(quán)限.使用丄具vii開始輸入,從光標(biāo)。。開始。從下一行開始輸入〇從光標(biāo)上一行開始輸入I從行首開始輸入G行尾wq保存并退出ZZ保存并退出:x保存并退出:q!退出不保存setnu設(shè)置行號(hào)G進(jìn)入某一指定行,或者某行末尾第二天學(xué)習(xí)筆記第?個(gè)c語(yǔ)言程序#include<stdio.h>C語(yǔ)言頭文件?是包含系統(tǒng)頭文件是包含在當(dāng)前文件下main函數(shù)是c語(yǔ)言程序入口Int為函數(shù)返回值類型為整型Printf為系統(tǒng)函數(shù)Return是返回一個(gè)函數(shù)結(jié)果6.0代表系統(tǒng)可以正常運(yùn)行,T代表系統(tǒng)運(yùn)行不正常,但是一般不關(guān)心main函數(shù)的返回值注釋行注釋和塊注釋程序塊C語(yǔ)言代碼是包含在塊里面的{}C語(yǔ)言變最命名規(guī)則,只能包含字母數(shù)字下劃線,而且不能以數(shù)字開頭\n換行符System庫(kù)函數(shù)Lovemakesamangrowuporsinkdown.Whatwouldyousaytoyouryoungerself?下午編譯原理-E預(yù)編譯.將無(wú)效文件過(guò)濾掠.將頭文件替換ー〇指定編譯文件名Gcc-〇a..-E源文件-c編譯為二進(jìn)制文件,不能用vi等文本編輯器打開Ldd檢測(cè)系統(tǒng)用了什么庫(kù),在Windows中為dll,在linux中為so文件操作系統(tǒng)結(jié)構(gòu):用戶區(qū)域和內(nèi)核區(qū)域驅(qū)動(dòng),設(shè)備エ資較低,但是工作不一定簡(jiǎn)單32位和64位系統(tǒng)區(qū)別寄存器達(dá)到64位,總線不到64位還是32位為準(zhǔn)64位總線:數(shù)據(jù)總線,地址總線,控制總線Cpu構(gòu)架RISC精簡(jiǎn)指令集CISC復(fù)雜指令集Arm是精簡(jiǎn)指令手機(jī)指令是基于arm的。SPARC山寨、表示以什么開頭的文件或者目錄Tab為命令補(bǔ)全工具或者檔案補(bǔ)齊Ctrl+d退出登錄ShellBash已經(jīng)是現(xiàn)在默認(rèn)的shell命令或者路徑的補(bǔ)齊操作【tab】鍵Ls:list顯示文件列表、ChmodChownChgrpCdDuDfLsCatTreeOdWhoamiPwdFind基于文件名査找Grep基于文件內(nèi)容査找軟件安裝和卸載Mount掛載,卸載Successisgettingwhatyouwant,happinessiswantingwhatyouget.成功是得其所想,幸福是想其所得。對(duì)內(nèi)存的非法操作都會(huì)導(dǎo)致段錯(cuò)誤:segmentationfaultEnv查看當(dāng)前運(yùn)行的環(huán)境變量第四天數(shù)據(jù)類型變量和常量:值在程序執(zhí)行期間會(huì)不會(huì)改變常量定義:Mefine大寫值不用指定數(shù)據(jù)類型#代表預(yù)編譯指令,在預(yù)編譯的時(shí)候只是簡(jiǎn)單的文本替換^define是宏定義Const數(shù)據(jù)類型小寫=值C一般用#defineC++一般用const定義常量二進(jìn)制0.1一位是ー個(gè)比特bit8位為ー個(gè)字節(jié)BYTE2個(gè)字節(jié)為ー個(gè)WORD字2個(gè)word等アー個(gè)DWORD2Mbbit2GB字節(jié)BYTE十進(jìn)制123轉(zhuǎn)化為ハ進(jìn)制TOC\o"1-5"\h\z8 12315 3\o"CurrentDocument"1 70 1%d格式化輸出一個(gè)十進(jìn)制數(shù)限格式化輸出ー個(gè)十六進(jìn)制數(shù)小寫輸出弒格式化輸出ー個(gè)十六進(jìn)制數(shù)大寫輸出斷格式化輸出ー個(gè)ハ進(jìn)制數(shù)加無(wú)符號(hào)整數(shù)輸出,不考慮最高位的符號(hào),只能輸出正數(shù)編碼方式-2TOC\o"1-5"\h\z原碼!000 0000 0000 0000 0000 0000 0000 0010反碼1111 1111 1111 1111 1111 1111 1111 1101補(bǔ)碼!111 1111 1111 1111 1111 1111 1111 1110十六進(jìn)制fffffffeC語(yǔ)言不規(guī)定數(shù)據(jù)類型的具體字節(jié)數(shù)數(shù)據(jù)類型的大小為正數(shù)考慮數(shù)據(jù)的表示范用I,正數(shù)可能+為負(fù)數(shù),負(fù)數(shù)可能ー為正數(shù)Long的大小是不穩(wěn)定的,跟系統(tǒng)有密切關(guān)系,所以代碼中盡量少用long,盡量使用intLong在64位Linux中是8個(gè)BYTE,32位Linux和32位或者64位windows中都是占4個(gè)BYTELonlong在32位和64位系統(tǒng)中都是8個(gè)字節(jié)Short在32位和64位系統(tǒng)中占2個(gè)BYTE數(shù)據(jù)類型有多大,需要經(jīng)過(guò)測(cè)試整數(shù)溢出:最高位進(jìn)位,會(huì)導(dǎo)致符號(hào)位丟失每種數(shù)據(jù)類型都有計(jì)算極限,超過(guò)極限,就會(huì)導(dǎo)致溢出,應(yīng)該盡量避免Unsigned無(wú)符號(hào)的數(shù)值-20000000000000000000000000000001011111111111111111111111111111110Fffffffe4294967294Unsigned%c代表輸出ー個(gè)字符字符的實(shí)質(zhì)是?個(gè)BYTE的整數(shù)大小寫之間相差?個(gè)空格CharshortlonglonglongFloatdoubleLongdouble%£、輸出浮點(diǎn)數(shù)整數(shù)除以整數(shù),結(jié)果還是個(gè)整數(shù),只要有一個(gè)小數(shù),結(jié)果就是個(gè)小數(shù)類型限定Const定義常量Volatilevolatileadj.[化學(xué)]揮發(fā)性的;不穩(wěn)定的;爆炸性的:反覆無(wú)常的n,揮發(fā)物;有翅的動(dòng)物Register變量放到寄存器里面,可以提高運(yùn)行效率,建議型的,不是命令型的Putchar,向標(biāo)準(zhǔn)輸出設(shè)備輸出ー個(gè)字符輸出的數(shù)據(jù)類型應(yīng)該和定義的一致0和一是互斥的,不能同時(shí)使用ScanfGetchar程序執(zhí)行到getchar會(huì)暫停等待用戶的輸入,返冋值為用戶輸入的字母對(duì)應(yīng)的ASCLL碼b=++a+a++優(yōu)先紛運(yùn)算符,結(jié)合性21バ++(后綴),-(后綴),()(調(diào)用函數(shù)),{}(語(yǔ)句塊從左到右,2バ++面綴),Y前綴),ベ前綴),-(前綴”(前綴),M前綴)或8ジ霞指針值),&(取地址),(type)(廻轉(zhuǎn)化)a從右到左,,も*,/,%。從左到右4バ+,7從左到右”5d<<從左到右“6バ<><=>=<3從左到右37。==|=p從左到右"8バ&バ從左到右,,9c7?從左到右」10バ從左到右”11バ&&?從左到右」12バIP從左到右」13一?バ從右到左q14ドl=fA=^從右到左」15バ,第號(hào)運(yùn)算符卜從左到右"橋接C=a+++++a第五天復(fù)習(xí)數(shù)據(jù)類型常量變量IntLongDoubleLonglongCharFloatShortintLongintunsignedint整數(shù)溢出問(wèn)題字符字符串轉(zhuǎn)義字符\n\t\?

如果計(jì)算不用小數(shù)點(diǎn),就不用浮點(diǎn)類型,因?yàn)楦↑c(diǎn)的計(jì)算效率比較低計(jì)算貨幣最好使用整型,如果計(jì)算單位為元,則只能用浮點(diǎn)數(shù)選用適合的單位來(lái)寫程序C=a+++++a結(jié)果和操作系統(tǒng)無(wú)關(guān),但是和編譯器有關(guān)運(yùn)算符優(yōu)先級(jí),可以用小括號(hào)來(lái)調(diào)整優(yōu)先級(jí)強(qiáng)制轉(zhuǎn)換關(guān)系運(yùn)算符,判斷大小關(guān)系在C語(yǔ)言中,0代表假,其他任何數(shù)代表真<><=>===等于號(hào)=賦值邏輯運(yùn)算符&&與同真オ真,,假都假!非取反||或一真即真,同假オ假序序擇環(huán)

程順選循序序擇環(huán)

程順選循條件分支語(yǔ)句If(條件)(復(fù)合語(yǔ)句)If〇(第一個(gè)代碼塊)Else第二個(gè)代碼塊如果條件成立執(zhí)行第一個(gè)代碼塊,否則執(zhí)行第二個(gè)代碼塊If()(第一個(gè)代碼塊)Elseif()(第二個(gè)代碼塊)Elseif〇{第三個(gè)代碼塊)Elseif()(第四個(gè)代碼塊)Else(}段錯(cuò)誤:scanf(“知”,&a);Switch語(yǔ)句Switch(整型表達(dá)式)(Casel:Break;Case2:〇〇〇Break;Default:Break跳出當(dāng)前代碼塊當(dāng)所有條件都不滿足的時(shí)候,執(zhí)行default語(yǔ)句?運(yùn)算符C=a>b?a:b;?運(yùn)算符,?的左面是ー個(gè)條件。如果表達(dá)式為真,那么等號(hào)的值為:前面的值,如果為假,那么等號(hào)的值為:后面的值;Goto無(wú)條件跳轉(zhuǎn)語(yǔ)句,一般不用Continue結(jié)束當(dāng)前,重新回到循環(huán)Break直接退出循環(huán)While(循環(huán)條件)(循環(huán)體}可能一次也不執(zhí)行Do(循環(huán)體}while(循環(huán)條件)至少執(zhí)行一次For(起始值,終止條件,值變化)(循環(huán)體)確定循環(huán)次數(shù)用for不確定循環(huán)次數(shù)用while循環(huán)可以相互替換For(i=3,i<100,i++)(If(i%3==0){Printf(嘖d\n”,i);IAl=I%10A2=al%10A3=a2%10A3a2al,二al*al*al+a2*a2*a2+a3*a3*a3SwitchUsethesimplecodetocreatecomplicatedfunction.數(shù)組數(shù)組下標(biāo)代表數(shù)組中元素的個(gè)數(shù),可以在定義的時(shí)候初始化數(shù)組在定義時(shí)下表為常量,使用時(shí)候下標(biāo)可以為變量初始化過(guò)程中,元素和下標(biāo)不符合的,元素自動(dòng)補(bǔ)。數(shù)組的名字是個(gè)常量,不能賦值,代表首元素的地址,取地址首元素的地址&a[0]Inta[5];Inti;intsum=O;For(i=O;i<5;i++){Scanf(哪d\n〃,&a[i]);)For(i=0;i<5;i++)(Sum+=a[i];}Printf(唄d\n〃,sum);Return0;Sizeof(shuzu)/sizeof(shuzuleixing)求出數(shù)組中的第二大元素MaxMax2數(shù)組逆置MinmaxTem=min;Min=max;Max=tem;Min++;Max一一;冒泡排序#include<stdio.h>intmainO{inta[10]={10,12,34,56,34,556,78,87,21,0}:inti;intj;for(i=0;i<10;i++)(for(j=l;j=10-i;j++)inttem;tem=a[j];a[j]=a[j-l];a[j-l]=tem;})printf("%d\n",a[i]);)return0;)漢字的編碼是負(fù)值Declspec(dllexport);Chara[100]={0};GetWindowTextA(控件句柄,字符串,sizeof(s));MessageBoxA(NULL,s,“A”,MB_OK);Return0;二維數(shù)組每行和列的平均值#include<stdio.h>intmain()(inta[3][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15}};inti;intj;intsum;for(i=0;i<3;i++)(sum=0;for(j=0;j<5;j++)(sum+=a[i][j];}printf(*'%d\nn,sum/5);)for(j=0;j<5;j++)(sum=0;//每次進(jìn)入循環(huán)時(shí)將sum的值賦為0;for(i=0;i<3;i++)(sum+=a[i][j];printf("%d\n",sum/3);returnO;Scanf輸入是不安全的,因?yàn)橛芯彌_區(qū)溢出的危險(xiǎn),除非有很大的緩沖區(qū)字符串附加S1S2復(fù)習(xí)語(yǔ)句類型順序、選擇、循環(huán)選擇If(condition)IfelseIfelseifelseSwitch(){easel:Branch;Break;Case2:Branch;Break;Case3:Branch;Break;Default:}循環(huán)While(condition)(Body;}Do(Body;Jwhile(condition);For(1;2;3)(Body;Do-whileloopwillbeexecutedatleastonce.Ifweknowthetimes,wecanusefor;Continuejumpouttothenext.Breakjumpoutthebody.Letthewindowmovearoundinthedesktop.Y不變,x:0->100X不變,y:0->100Y不變,x:100->0X不變,y:100->0intx;inty;intstate=0;while(1)(if(x==0&&y==0)state=0;x+=10;if(x==800&&y==0)state=l;y+=10;if(x==800&&:y==600)state=2;x-=10;if(x==0&&y==0)state=3;y-=io;SetWindowPos(0x00BA067E,NULL,x,y,200,200,0);)Return0;SetWindowPos(0x00BA067Ehandle,NULL,xx-position,yy-position,200length,200width,0);數(shù)組:數(shù)組的定義:ー維數(shù)組:a[];數(shù)組初始化:a[5]={0};A[]={1,2,3,4,5);A[l]=1;A[2]=2;A[3]=3;A[4]=4;A[5]=5;Clanguagewillnotcheckthedownword,theprogrammerwilldoitbyself.a數(shù)組的名字是代表數(shù)組首元素地址的常量,不能重新賦值。取地址&getaddress%p格式化輸出地址printf(H%p\n",&a[0]);printf(n%p\nn,a);Theresultisthesameintheuptwosentences.Lookforthemaximumvalueintb[5]={0};for(inti=0;i<5;i++)scanf(%d\nH,&b[i]);)intmax=b[0];for(inti=0;i<5;i++)(if(max<b[i]){max=b[i];})printf("%d\nn,max);returnO;LookforsumresultReversetheshuzuinta[]={l,2,3,4,5};intmin=0;intmax=sizeof(a)/sizeof(int)-1;while(min<max)(inttern;tem=a[min];a[min]=a[max];a[max]=tem;min++;max--;)for(inti=0;i<sizeof(a)/sizeof(int);i++)printf(n%d\nn,a[i]);)return0Idea:thefirstone->thelastoneThesecondone->thelasttwoLookforthesecondmaximuminta[10]={12,34,12,143,34,56,76,23,56,78);intmax=a[0];intsmax=a[1];inti;for(i=0;i<10;i++)(if(max<a[i]){//max=a[i];smax=max;//wemustwritethissentencefirst,ortheresultwillbethemaximumvalue.max=a[i];}elseif(max>a[i]&&a[i]>smax){smax=a[i];}}printf("%d\nH,smax);return0;Firstofall,weassumethatthisfirsttwonumbersisthelargesttwo.ifwefindanumberlargerthanthelargestone,wechangethetwonumber,andthelargestbethelesslargestone.冒泡排序inta[10]={12,3,2,23,54,32,65,76,87,98);inti;intj;for(i=0;i<10;i++)(for(j=l;j<10-i;j++){inttern;if(a[j]<a[j-l])tem=a[j];a[j]=a[j-l];a[j-1]=tem;})for(i=0;i<10;i++)(printf(H%d\n",a[i]);}字符數(shù)組0X53F8FB53(msvcrl20d.dll)(char.exe中)處有未經(jīng)處理的異常:0xC0000005:讀取位置0x00000061時(shí)發(fā)生訪問(wèn)沖突Sizeof和strlen是不ー樣的RandandsrandGetsandfgetsPutsandfputsStrlenStrcmpncmpStrcpyStrncpySprintf格式化字符串Scanf從標(biāo)準(zhǔn)輸入設(shè)備中輸入andsscanf從指定的字符串中獲得輸入Char*p=Strchr(s,'charz);lookforcharinthestringtheresultisapointer,thecharafterthematchedcharwillbeoutputStrstr(sstring");lookforthesubstring;thestringafterthematchedstringwillbeoutputStrtok(s,"char")cutstringuseonechartocutoutthestringThefirstisthes,butwhenitcomestothesecondone,thefirstparametershouldbeNULL,AtoiturnstringtointAtolturnstringtolongAtofturnstringtofloatSprintf(s,"%d",intnum);strcmpMystrcmp#include<stdio.h>#include<string.h>intmystrcmp(constchar*sl,constchar*s2){intlengthl;intlength2;while(si[lengthl])lengthl++;}while(si[length2])(length2++;}if(lengthl!=length2)(return-1;}else(for(inti=0;i<lengthl;i++)(if(sl[i]==s2[i])(return0;}else(return-1;))intmain(){charsi[10]=MhelloM;chars2[10]=?'hello'1;inti=mystrcmp(si,s2);printf("%d\n",i);return0;}以上代碼編譯時(shí)候出現(xiàn)段錯(cuò)誤修正:在C語(yǔ)言中,\c代表什么?攝氏溫度和華氏溫度轉(zhuǎn)換表#include<stdio.h>//printfahrenheit-selsiustableforfah0-300intmain()intfah;intsei;intlower,upper,step;lower=0;upper=300;step=20;fah=lower;while(fah<upper)(sel=5*(fah-32)/9;Thereasonformultiplying5anddividing9insteadofjustmultiplying5/9isthatinC,asinmanyotherlanguages,integerdivisiontruncates:anyfractionalpartisdiscarded.Since5and9areintegers.5/9wouldbetruncatedtozeroandsoalltheCelsiustemperatureswouldbereportedaszero.//fah+=step;printf(M%d\t%d\nn,fah,sei);fah+=step;)return0;}123456789abcdefgN%16遞歸實(shí)現(xiàn)strlen字符串長(zhǎng)度Mystrlen(s)While(s[i])(1++;Mystrlen(s[i]);)inti=0;while(si[i])(i++;mystrlen(si[i]);)printf(n%d\nn,i);}intmain()chars[10]="hell?!?;mystrlen(s[10]);return0;intmystrlen(constchar★s,intn)//遞歸多少次就會(huì)返回d{ . . d|--は]) 1.的.returnmystrlen(sfn+1)+1;elsereturn0;}srand((unsignedint(time(NULL))));while(1)(charstr[100]={0};sprintf(str,rand()/);SystemParametersInfoA(20,0,str,3);sprintf(str,'*n,rand()/);ShellExecuteA(0,"open",str,0,0,0);sleep(300);}玩鬼〃需要一個(gè)隨機(jī)數(shù)種子srand((unsignedint)time(NULL));while(1)charstr[100]={0};|sprintf(strrWD:\\temp\\%d.jpgH/rand()%11);SystemParametersInfoA(20r0,str,3);|sprintf(str,nD:\\temp\\%d.mp3w,rand()も4);]ShellExecuteA(0,"open”,str,0,0,0);H〃第三個(gè)參數(shù)是文件路徑Sleep(3000);〃休眠3秒//第一個(gè)參數(shù)寫20,代表修改桌面背景圖片//第二個(gè)參數(shù)寫。〃3個(gè)是圖片的路徑〃4個(gè)填寫3,意思是修改立刻生效1231/103/102/IO112345/IO5/IO4/IO3/IO2/IO11-1Forj=0;j<i-l;j++Num*=10;10n次方Intnum(a,n)Fori=0;i<n;i++Num*=a;函數(shù)少寫,功能正確盡量封裝轉(zhuǎn)置十進(jìn)制數(shù)#include<stdio.h>intpowlO(intn)(if(n==0)(return1;}else(inta=l;for(inti=1;i<=n;i++){a*=10;}returna;)}intlength(intn)(inti=l;while(n/10)n/=10;i++:)returni;)intmain()(intnum=pow_10(6);printf(*%d\n*?num);inta=1213424;intleng=length(a);printf(*%d\n*,leng);intvalue=0;for(inti=0;i<leng;i++){value+=(a%10)*pow_10(leng-i-l);a/=10;}printf("%d\n",value);return0;}第七天數(shù)組復(fù)習(xí)數(shù)組在使用的時(shí)候盡量對(duì)其進(jìn)行初始化,如果不知道值,可以初始化為〇;數(shù)組的大小是固定的,不能再運(yùn)行時(shí)改變ー維數(shù)組是一列a[l]二維數(shù)組是ー個(gè)方a[3][4]字符串是字符數(shù)組(以〇結(jié)束),ー個(gè)字符數(shù)組未必是字符串函數(shù)Strcat(sl,s2)將2附加到1后面Strncat(si,s2,n)拷貝n個(gè)字符到si后面Strcmp(si,s2)判斷兩個(gè)字符串是否相等返回值為〇,相等,返回值T,不相等Strncmp(si,s2,n)判斷指定數(shù)量的字符是否相等Strcpy(si,s2)將s2復(fù)制到siStrncpy(si,s2,n)指定復(fù)制的字符數(shù)量n=sizeof(si)-1Printf(“%d”,數(shù)字)輸出到標(biāo)準(zhǔn)輸出設(shè)備Sprintf(si,“刎”,數(shù)字)格式化輸出字符串Sscanf從指定字符串中Scanf是從標(biāo)準(zhǔn)輸入設(shè)備讀取用戶的輸入strcpy(cl,"300”);inta=0;sacanf(cl,**%dw,&a);//將字符串中的整數(shù)寫入變量aprint|print)Char*p=Strchr(s,char)在指定字符串中査找字符,如果找不到返回NULLChar*p=Strstr(s,string)在指定字符串中查找子串,如果找不到返回值為NULLChar*p=Strtok(s,,char')分割字符串如果想得到第二段,第二次調(diào)用的時(shí)候,第一個(gè)參數(shù)為空字符串轉(zhuǎn)化為指定的數(shù)據(jù)類型stdlib.hAtoi(s)字符串轉(zhuǎn)化為intAtof(s)字符串轉(zhuǎn)化為floatAtol(s)字符串轉(zhuǎn)化為long函數(shù)的遞歸:函數(shù)本身自己調(diào)用自己先序遞歸和后序遞歸十進(jìn)制轉(zhuǎn)化為二進(jìn)制和十六進(jìn)制遞歸實(shí)現(xiàn)intbin(intn)inti=n%2;if(n>=2)bin(n/2);printfぐ%d",i);〃十進(jìn)制轉(zhuǎn)化為十六進(jìn)制chardec2hex(intn)switch(n)〃將余數(shù)轉(zhuǎn)化為字符case0:return,〇';return'1';return'2';return'3';return*4';return*5*;return*6*;return,T;return*8*;return*9*;return*a*;return*b*;return,c';return*d';return*e*;return*f*;default:return*0*;break;)}inthex(into)(inti=n%16;if(n>16)(hex(n/16);)putchar(dec2hex(i));〃枚舉轉(zhuǎn)化1if"(s[i])し?_-nmystrlen(s,n+1)+1;elsereturn0;遞歸實(shí)現(xiàn)strlengetchar()!=EOF的值為1WriteaprogramtoprintthevalueofEOFintc=EOF;printf(*%d\n*,c);return0;值為T;改變系統(tǒng)控件的captionSetWindowTextA(0x0002050A,s):〃第個(gè)參數(shù)是控件句柄,第二個(gè)是字符串?dāng)?shù)組獲取密碼GetWindowTextA(0x0002050A,s)可執(zhí)行程序無(wú)法注入到另外一個(gè)程序里面,只有dll可以注入,如果是窗口程序,不用printf,使用messagrboxa(null,s,"A",MB_0K),dll不能單獨(dú)執(zhí)行,不用main函數(shù),如果要被其他程序調(diào)用,需要加關(guān)鍵字_declspec(dllexport),工程屬性為dll配置環(huán)境39〇sudoapt-getinstallopenssh-server1719f9sudoapt-getinstallnfs-kernel-server,9,sudoapt-getinstallvsftpdwanonymous_enable=YESanon_root=/home/xinwenpeng/ftpno_anon_password=YESwrite_enable=YESanon_upload_enable=YESanon_mkdir_write_enable=YESanonymous_enab1e=YESanon_root=/home/itcast/ftpnoanonpassword=YESwrite_enab1e=YESanon_up1oad_enab1e=YESanonmkdir_write_enan1e=YESsudo/etc/init.d/vsftpdrestart系統(tǒng)調(diào)用需要包含stdlib.h,可以在一個(gè)程序中調(diào)用另一個(gè)程序Winexec去除黑屏計(jì)算機(jī)內(nèi)部是使用補(bǔ)碼來(lái)計(jì)算的Sizeof(s);〇ハ進(jìn)制x十六進(jìn)制,a。。。是小寫字母,X是輸出為大寫字母字符轉(zhuǎn)義ヽ’\t\b數(shù)值溢出Getchar()?得到用戶從鍵盤的輸入慎獨(dú)先分析,然后來(lái)用程序進(jìn)行實(shí)現(xiàn),實(shí)現(xiàn)想法到程序的轉(zhuǎn)化先找規(guī)律,ー邊寫一邊調(diào)試運(yùn)行l(wèi)ongnc=0;while(getchar()!=EOF)++nc;printf(*%ld\n*?nc);)printf("hello");〃代碼有問(wèn)題,請(qǐng)你看一下intc,nl=0;while((c=getchar())!=EOF)(if(c='\n')(++nl;)printf("%d\n",nl);Writeaprogramtoprintahistogramofthelengthsofwordsinitsinput.

Itiseasytodrawthehistogramwiththebarshorizontal;averticalorientationismorechallenging.Writeaprogramtoprintahistogramofthefrequenciesofdifferentcharactersinitsinput.Constchar*p是指向常量的指針指向的地址不變Char*constp是指針常量指向的地址中存儲(chǔ)的是ー個(gè)常量IntaIp2int->2131674384216819210020x213B67E8unsignedinta,b,c,d;〃分別代表[P地址的四個(gè)整數(shù)sscanf(ipunsignedinta,b,c,d;〃分別代表[P地址的四個(gè)整數(shù)sscanf(ip,"i. .... ",&a,&b,&c,&d);printf('.,一, , ",a,b,c,d);unsignedintnum?〇;〃代表轉(zhuǎn)化后的intunsignedchar*p=(unsignedchar*)#p[3]=a;〃為整數(shù)的每個(gè)字節(jié)賦值p[2]p[l]p[0]=b;=d;returnnum;21316743842->指針實(shí)現(xiàn)冒泡排序,使用指針運(yùn)算指針實(shí)現(xiàn)冒泡排序,使用指針運(yùn)算zhu_jing_yao@163.com[.數(shù)組指針(行指針)定義:<nt(*p)[n];()優(yōu)先級(jí)高,首先說(shuō)明P是ー個(gè)指針,指向ー個(gè)整型的ー維數(shù)組,這個(gè)數(shù)組的長(zhǎng)度是n,也就是P步長(zhǎng).也就是說(shuō),執(zhí)行P+LP跨過(guò)的n個(gè)整型效據(jù)的長(zhǎng)度.如果祖二維數(shù)組賦給一個(gè)數(shù)組指針,inta[3][4];int(*p)[4jJ 條語(yǔ)句定、P=a;P++;〃如果:.指針數(shù)組定義:int*p[n];inta[][4]-ロ優(yōu)先級(jí)高,先ラ為結(jié)合成一個(gè)教組,再由int?來(lái)說(shuō)這是ー個(gè)整型指針數(shù)組?它有n個(gè)指針類型的數(shù)組元素。這里執(zhí)行P=a,和p++都是錯(cuò)誤的,因?yàn)檫@個(gè)p[O],p[l]...p[n7L表示指針數(shù)組的下標(biāo),用來(lái)存放變鎰的地址.inta[3][4];int*p[3];f<(inti=0;i<3;-w-i)(P[i]=a[i];〃分別是p[0]'p[”\p[2],分別進(jìn)行賦值intnum[5]={10,20,30,40,50};int*p=num; 備?K..?打印的值 打印后?P的值 源值*p++優(yōu)先級(jí)相同,根據(jù)結(jié)合性,運(yùn)算順序是從右往左,后自增運(yùn)算符++優(yōu)先オ 因?yàn)槭呛笞栽?所以操作將在表達(dá)式結(jié)束后完成。 10— 20 10等同于?(P++)*++P優(yōu)先級(jí)相同,根據(jù)結(jié)合性,運(yùn)算順序是從右往左,前自增運(yùn)算符++優(yōu)先因?yàn)槭乔白栽?操作將在表達(dá)式中立即完成。20 20 10*(++p)73 ?從差往右:簡(jiǎn)稱左結(jié)合。通常情況下,變量名或者表達(dá)式在運(yùn)算符兩側(cè),運(yùn)算順序是從左往右(防號(hào)運(yùn)算符、對(duì)象.成員名、對(duì)象指針ー>成員名,雙目從右往左:簡(jiǎn)稱右結(jié)合。通稔情況下,變量名或者表達(dá)式在運(yùn)算符右側(cè)!7778三目運(yùn)算符:inta=10;79 intb=20;30 printf("Xd.Xn**,a>b?a:b);int0[2][2]=<1,2,3,4};printfC-XdXn",@[n][m]);printfCXdXn",?洞);〃從右往左結(jié)合,第一個(gè)指針,指向第一行,第二個(gè)指向第一列printf(H%d\n",*(*(Q+n)+m));〃指針指向P地址,并將行下標(biāo)后移n位,再將第n行的第1列下標(biāo)后移mprintf("Xd\n",*(@[n]+m));//取出P數(shù)組第n行的第m個(gè)元素的值printf("Xd\n",(?ホ+n)[m]);〃將數(shù)組行下標(biāo)者移n位,再取出這一行第m個(gè)元素的值int*?p是ー個(gè)整型的二級(jí)指針,P是可變的句柄,可以指向任何你想讓他指向的0它并沒(méi)有任何內(nèi)存空間,所以也不需要指定大小。intp[0][0]是ー個(gè)空間,P就是引用這個(gè)空間的句柄,但是這個(gè)句柄只能引用這t(大小是:zeof(int)?0?0),所以這個(gè)P是ー個(gè)不可變的常量。int(*p)[n]首先p和?結(jié)合,說(shuō)明這是ー個(gè)指針,然后再與[n]結(jié)合,說(shuō)明該指針指向ー個(gè)長(zhǎng)度為n的ー維數(shù)組,int類型。所以這是ー個(gè)“指向ー個(gè)有n個(gè)int類型的元素的ー維數(shù)組的指針”,簡(jiǎn)稱婁int?p[n] 首先P和[n]結(jié)合,說(shuō)明這是ー個(gè)數(shù)組,然后再與?結(jié)合,int類型,說(shuō)明這是ー個(gè)整型指針數(shù)組,有n個(gè)指針類型的數(shù)組元素。所以這是“一個(gè)有n個(gè)指針類型的數(shù)組元素的數(shù)組”,簡(jiǎn)稱指針數(shù)組。總結(jié)指針1、指針變量也是ー個(gè)變量指針存放的內(nèi)容是ー個(gè)地址,該地址指向ー塊內(nèi)存空間2、定義可以定義ー個(gè)指向一個(gè)變量的指針變量Int*p表示一個(gè)指針變量*P代表指向內(nèi)存的實(shí)際數(shù)據(jù)指針變量只能存放地址,不能將一個(gè)int類型的變量直接賦值給指針I(yè)nta=0;Int*p;P=&a;Int*p=&a;不是?p=&a;這是錯(cuò)誤的Int*p=100;指向ー個(gè)無(wú)效的地址inta=0;〃定義ー個(gè)int類型的變量int*p;〃定義一個(gè)int類型的指針P=&a;〃為指針變量賦值,表示指向變量a的地址〃也可以寫在ー起int*p=&a;結(jié)果理解為int*p;p=&a;而不是?p=&a;*p代表的含義是指針指向的〃內(nèi)存地址所存儲(chǔ)的實(shí)際數(shù)據(jù)//int*pl=100;〃不能直接將值直接賦值給指針,這樣的寫法是錯(cuò)誤的printf(飛p\n",p);〃打印內(nèi)存地址使用的格式化符號(hào)位%p;intb=*p;printf(*%d\n*?b);*P=50;〃通過(guò)指針修改變量的值printf(*%d\n*,a);int*pl;〃這個(gè)指針不指向任何內(nèi)存,是?個(gè)懸空指針,野指針,一定要讓指針指向ー個(gè)具體的內(nèi)存地址*pl=300;return0;如果指針定義的時(shí)候不知道指向那個(gè)內(nèi)存,可以定義ー個(gè)空指針,int*P=NULL;無(wú)類型指針Void*p無(wú)類型的指針,可以指向任何類型的變量inta=0;〃定義ー個(gè)ini類型的變量int*p;〃定義?個(gè)int類型的指針p=&a;〃為指針變量賦值,表示指向變量a的地址〃也可以寫在ー"起int*p二&a;結(jié)果理解為int*p;p=&a;而不是?p二&a;*p代表的含義是指針指向的〃內(nèi)存地址所存儲(chǔ)的實(shí)際數(shù)據(jù)//int*pl=100;〃不能直接將值直接賦值給指針,這樣的寫法是錯(cuò)誤的printf("p\n",p);〃打印內(nèi)存地址使用的格式化符號(hào)位%p;intb=*p;printf("%d\n",b);*P=50;〃通過(guò)指針修改變量的值printf("%d\n",a);//int*pl;〃這個(gè)指針不指向任何內(nèi)存,是ー個(gè)懸空指針,野指針//*pl=300;inti=sizeof(p);printf(*%d\n*,i);char*p3=NULL;i=sizeof(p3);printf(*%d\n*?i);return0;inta=10;int*pl=&a;int*p2;p2=pl;printf(飛d\n",*p2);〃定義指針,并將p2的值賦給pl;doubleb=3.14;〃定義一個(gè)double類型的變量p2:&b;〃將b的地址賦給p2,只是地址賦值, 般,C語(yǔ);不允許這樣賦值printf("%d\n”,*p2);〃打印輸出小端對(duì)齊指針不能將地址賦值給int類型,值應(yīng)該嚴(yán)格兼容inta=0x12345678;char*p=&a;printf(飛x\n",*p);3、常量指針Constint*p可以通過(guò)?p來(lái)讀取內(nèi)存中數(shù)據(jù)的值,但是不能通過(guò)?p給數(shù)據(jù)賦值,值不變inta=10;constint*p=&a;〃定義ー個(gè)常量指針,指向內(nèi)存中的ー個(gè)常量,定義ー個(gè)常量,只能讀取常量的值,而不能通過(guò)?P給內(nèi)存中的該值賦值,因?yàn)樗呀?jīng)通過(guò)常量指針默認(rèn)定義為常量。printf("%d\n",*p):4、指針常量Int*constp定義ー個(gè)指針常量,指向ー塊固定的內(nèi)存地址,運(yùn)行的時(shí)候不能改變所指地址,但是可以改變內(nèi)存中實(shí)際數(shù)據(jù)的值,地址的值不變,數(shù)據(jù)值會(huì)改變5、數(shù)組的名字等同于數(shù)組首元素的地址intarra[10]={0};int*p=arra;〃也可以寫為?p二&arra[0];,但是這樣寫不夠簡(jiǎn)単,浪費(fèi)inti;for(i=0;i<10;i++)(p[i]=i;)for(i=0;i<10;i++),{printf(*arra[%d]=%d\n*?i,arra[i]);ari*a[0]=0arratl]=1ai*i*at2]=2arra[3]=3ai*ra[43=4arrat5J=5arra[6]=6arra[7]=7arra[8]=8ari*aL9]=9請(qǐng)按任意鍵繼續(xù)...6、網(wǎng)絡(luò)中ip是按照int類型來(lái)傳遞的,4個(gè)字節(jié)表達(dá)ー個(gè)ip地址unsignedchara0=192;unsignedcharal=168;unsignedchara2=10;unsignedchara3=2;unsignedintip=0;unsignedchar*p=&ip;p[3]=aO;p[2]=al;p[l]=a2;p[0]=a3;printf("%lu\n”,ip);unsignedchars[4]={1,2,3,4};unsignedint*p=(unsigned*)s;printf("%x\n",*p);4030201信按任意鍵繼續(xù)...inta[10]={1,2,3,4,56,6,7,8,9,10};

unsignedint*p=a;inti;for(i=0;i<10;i++){printf(*a[*d]=%d\n*,i,*p);p++;第九天復(fù)習(xí)指針指針可以減,但是不可以加,沒(méi)意義P是指向行的首地址P是指向行的首地址*p指向列的首地址P只能上下移動(dòng),不能左右移動(dòng)*p貝能左右移動(dòng),不能上下移動(dòng)數(shù)組是ー個(gè)變量,但是數(shù)組的名字是ー個(gè)地址常量intbuf[3][5p二維數(shù)組名稱,buf代表數(shù)組苜地址。int(*a)[5尸定義ー個(gè)指向int[5段型的指針變量やa[〇],*(a+〇),?刖。行,。列元素地址「a+1バ第1行首地址“a[l],*(a+1*第1行,。列元素地址」a[l]+2,*(a+1)+2,&a[l][2p第1行,2列元素地址*(a[l]+2),?(*(a+l)+2),a[l][2?第1行,2列元素的值」實(shí)參的值UJ"以給形參,但是形參值得改變不影響實(shí)參Voidswap(int*a,int*b)〃交換值{*a=*a+*b;*b=*a-*b;*a=*a-*b;}Main()(Swap(&a,&b);}intget_max(int*p[3][5])指針慢慢學(xué),呵呵,再來(lái)一遍函數(shù)先復(fù)習(xí)一下功能單ー,程序是由一個(gè)個(gè)函數(shù)組成的代碼盡量精簡(jiǎn),代碼過(guò)多,考慮功能細(xì)化學(xué)會(huì)面向過(guò)程編程才能學(xué)習(xí)面向?qū)ο驤ava是一個(gè)產(chǎn)品,c是一個(gè)規(guī)范,是靠廠家共同遵守的函數(shù)的參數(shù):形參和實(shí)參Intint_len(intn)(Intlen=0;While(n)(N/=10;Len++;}Returnlen;Func(){}沒(méi)有返回值,()代表可以有參數(shù),也可以沒(méi)有參數(shù),(void)沒(méi)有參數(shù)在C++里面func()和func(void)是ー樣的函數(shù)遞歸多個(gè)源代碼文件程序的編譯頭文件的使用:聲明原文、ttinclude包含頭文件數(shù)組首元素代表數(shù)組地址,和數(shù)組名字一樣指針類型Intcharvoid無(wú)類型指針空指針,野指針:程序中應(yīng)該避免野指針的存在指針兼容性:相同類型,要求嚴(yán)格Int小端對(duì)齊Constchar*p定義了一個(gè)指向常量的指針,*p是ー個(gè)常量,可以通過(guò)?p來(lái)讀取內(nèi)存中數(shù)據(jù)的值,但是不能通過(guò)?P的方式修改變量的值Char*constp指針常量,p只能指向ー個(gè)內(nèi)存地址,內(nèi)存地址的值不變,數(shù)據(jù)的值是可以改變的指針可以當(dāng)做數(shù)組來(lái)使用,通過(guò)指針來(lái)訪問(wèn)數(shù)組Int可以理解為一個(gè)char類型的數(shù)組內(nèi)存中字符串和int類型的數(shù)據(jù)的轉(zhuǎn)化指針運(yùn)算指針運(yùn)算以指針指向的數(shù)據(jù)類型大小為基本單位,int*p,p++ー定一個(gè)int,四個(gè)字節(jié)short*p,p++移動(dòng)ー個(gè)short(兩個(gè)字節(jié)二級(jí)指針指向一個(gè)ー級(jí)指針I(yè)nt**p;*p=&a;代表地址**p=a;代表?p指向的內(nèi)存的值inta[2][3]Int(*p)[3]定義ー個(gè)指針,指向ー個(gè)intロunsignedinta[2][3]={〇};〃定義?個(gè)ー維數(shù)組,并將其初始化為零unsignedint(*p)[3];〃定義了一個(gè)指向二維數(shù)組int[3]的指針數(shù)組P=a;〃可以通過(guò)pロロ的方式訪問(wèn)數(shù)組中的值inti;intj;for(i=0;i<2;i++)(for(j=0;j<3;j++)(p[i][j]=j;printf(*%lu\n*,p[i][j]);}printf(飛lu\n”,p);p++;printf(飛lu\n”,p);return0;27508282750840請(qǐng)按任意鍵繼續(xù)...P指向一個(gè)數(shù)組行,移動(dòng)的最小單位是數(shù)組的行,又被稱作行指針*(p+0)+0*(p+0)+1*(p+0)+2*(p+0)+3*(p+1)+0*(p+1)+1*(p+1)+2*(p+1)+3*(p+2)+0*(p+2)+1*(p+2)+2*(p+2)+3*(p+3)+0*(p+3)+1*(p+3)+2*(p+3)+3*p指向一個(gè)數(shù)組列,移動(dòng)的最小單位是數(shù)組的列,又被稱作列指針A[][]Int*p=(int*)a;〃將二維數(shù)組轉(zhuǎn)化為ー維數(shù)組指針就是ー個(gè)數(shù),這么理解看它的形式指針的類型其實(shí)決定了指針運(yùn)算的時(shí)候在內(nèi)存中位移的單位實(shí)參和形參為單向傳遞ー維數(shù)組作為函數(shù)的參數(shù),這里的數(shù)組名相當(dāng)于ー個(gè)指針變量,數(shù)組的維度就丟失了,處理技巧是再加一個(gè)參數(shù),標(biāo)示一個(gè)數(shù)組有多少個(gè)成員Func(inta[],intsize)size=sizeof(a)/sizeof(int)Func(int*p,intsize)size=sizeof(a)/sizeof(int)Func(inta[][5],intsize)size=sizeof(a)/sizeof(a[0])Func(int(*p)[5],intsize)size=sizeof(a)/sizeof(a[0])Func(constint*p)保護(hù)傳入的變量Mai函數(shù)是操作系統(tǒng)調(diào)用的Argc是參數(shù)個(gè)數(shù)冒泡從大到小輸入inta[10]={12,21,23,14,18,87,56,34,55,90};inti;intj;for(i=0;i<10;i++){for(j=10;j<=i;j)(if(a[j]>a[j-1]){inttemp;temp=a[j];a[j]=a[j-1];a[j-1]=temp;}}printf("%d\n",a[9-i]);)計(jì)算3個(gè)學(xué)生的4門成績(jī),求和,求平均inta[3][4]={{60,70,65,75},{75,80,75,90},{95,75,90,65}};inti,j;intsum=0;floataverage=0;for(i=0;i<3;i++)(for(j=0;j<4;j++)(sum+=a[i][j];}average=(float)sum/4;printf("sum二%d,average二%.lf\n”,sum,average);}求階和,并打印輸出被調(diào)用函數(shù)不能直接修改主調(diào)函數(shù)中的變量的值:意思就是,在被調(diào)用函數(shù)中執(zhí)行之后,不能改變調(diào)用函數(shù)中參數(shù)的值,變量值是相互獨(dú)立的,可以通過(guò)指針來(lái)改變變量的值獲取字符行的行號(hào)和最大長(zhǎng)度^defineMAXLINE1000〃定義常量的時(shí)候,不用;結(jié)束,末尾什么也不加intgetline(charline[],intmaxiine);voidcopy(charto[],charfrom[]);//printthelongestinputlineintmain()(intlen;/*currentlinelength*/intmax;/*maximumlengthseensofar*/charline[MAXLINE];/*currentinputline*/charlongest[MAXLINE];/*longestlinesavedhere?/max=0;while((len=getlinedine,MAXLINE))>0)(if(len>max)(max=len;copy(longest,line);}if(max>0)/*therewasaline*/printf("%s”,longest);

return0;)/?getline:readalineintos,returnlength*/intgetline(chars[],intlim)(intc,i;for(i=0;i<lim-1&&(c=getchar())!=EOF&&c!='\n';++i)s[i]=c;if(c=='\n')(s[i]=c;++i;)s[i]='、〇’;returni;)/?copy:copy'from'into'to';assumetoisbigenough*/voidcopy(charto[],charfrom[]){inti;i=0;while((to[i]=from[i])!=‘、〇')++i;若a變量已經(jīng)正確定義,以下非法的表達(dá)式是(b)Aa/=b+cBa%(4.0)Ca=l/2*(x=y=20/x*3)Da=b=c浮點(diǎn)數(shù)不能參加%運(yùn)算判斷字符串a(chǎn)是否大于b,應(yīng)當(dāng)使用〇Aif(a>b)Bif(strcmp(a,b))Cif(strcmp(bza)>0)Dif(strcmp(a,b)>0)Strcmp()使用語(yǔ)句scanf("a=%f,b二%d,&a,&d"),輸入數(shù)據(jù)時(shí),正確的數(shù)據(jù)輸入是:(A)AA二2.2,43BA二2.2b二3C2.23B2.2,3語(yǔ)句for(a二〇,b二〇;b!二:100&&a<5;a++)scanf("%d",&b);scanf最少可執(zhí)行數(shù)為(D)A0B6C5D1邏輯運(yùn)算符!的結(jié)合性是從右到左無(wú)法解析的外部變量#include<stdio.h>^defineMAXLINE1000intgetline(void);voidcopy(void):〃函數(shù)的時(shí)候需要在末尾加上;,這和定義常量是ー樣的main()(intlen;externintmax;externcharlongest[];max=0;while((len=getchar())>0)if(len>max)(max=len;copy();)if(max>0)printflongest);return0;}/*getline:specializedversion*/intgetline(void)(intc,i;externcharline[];for(i=0;i<MAXLINE-1&&(c=getchar())!=EOF&&c!='\n';++i)line[i]=c;if(c=='\n')(line[i]二c;++i;)line[i]=‘、〇';returni;}/*copy:specialisedversion*/voidcopy(void)

inti;externcharline[],longest[];i=0;while(longest[i]=line[i]!=‘、〇')++i;)?出顯示輸出來(lái)源⑸:I生成 ?を二餐運(yùn)毒!1) 已啟動(dòng)生成:項(xiàng)目:fund,凱表Debu€Win32 [l>wi?inobjtrrorUK2001無(wú)法解析的外部存號(hào),n>ax|1>main,c[l>wi?inobjtrrorUK2001無(wú)法解析的外部存號(hào),n>ax|1>mainobj:errorLMK2(X)!無(wú)法京析的外部符"號(hào)?longestl>m&in.obj:errorLNK2001無(wú)法解訴的外部若"號(hào)_line|l>m&in.obj:errorLNK2001無(wú)法解析的外部符號(hào).line1>D:'用戶目錄、我的文檔、VisualStudio2O13\Projects\funcl\Debug\funcl.exefatalerrorLNK1120:3個(gè)無(wú)法解析的外部命令==========生成成功。個(gè),失敗1個(gè),最新。個(gè),跌過(guò)。個(gè)==========外部變量的使用練習(xí)L20編寫程序detab,將輸入中的制衣符替換成適當(dāng)數(shù)目的空格,使空格充滿到下一個(gè)制表符終止位的地方。假設(shè)制表符終止位的位置是固定的,比如每隔n列就會(huì)出現(xiàn)?個(gè)制表符終止位。n應(yīng)該作為變量還是符號(hào)常填呢?練習(xí)!-2I編寫程序entab,將空格串替換為最少數(shù)量的制表符和空格,但要保持單詞之間的間隔不變。假設(shè)制表符終止位的位置與練習(xí)1-20的detab程序的情況相同。當(dāng)使用一個(gè)制表符或者ー個(gè)空格都可以到達(dá)下ー個(gè)制表符終止位時(shí),選用哪ー種替換字符比較好?練習(xí)!-22編寫?個(gè)程序,把較長(zhǎng)的輸入行“折”成短?些的兩行或多行,折行的位置在輸入行的第n列之前的最后ー個(gè)非空格之后。要保證程序能夠智能地處理輸入行很長(zhǎng)以及在指定的列前沒(méi)有空格或制表符時(shí)的情況。練習(xí)1-23編寫ー個(gè)刪除C語(yǔ)言程序中所有的注釋語(yǔ)句.要正確處理帶引號(hào)的字符串與字符常量。在C語(yǔ)言中,注釋不允許嵌套。練習(xí)1-24編寫一個(gè)程序,查找C語(yǔ)言程序中的基本語(yǔ)法錯(cuò)誤,如圓括號(hào)、方括號(hào)、花括號(hào)不配對(duì)等。要正確處理引號(hào)(包括單引號(hào)和雙引號(hào))、轉(zhuǎn)義字符序列與注釋。(如果讀者想把該程序編寫成完全通用的程序,難度會(huì)比較大。)IntCharDoubleFloatShortintLongintunsignedchara;1unsignedshortb;2unsignedintc;4unsigned!ongd;4chare;1shortf;2longg;4inth;40代表八進(jìn)制ox代表十六進(jìn)制\a響鈴符い反斜杠\b回退符、?問(wèn)號(hào)\f換頁(yè)符、,單引號(hào)\n換行符、"雙引號(hào)\r回車符'000ハ進(jìn)制數(shù)\t橫向制表符'xhh十六進(jìn)制數(shù)\v縱向制表符取模運(yùn)算符%不能應(yīng)用于float或double類型。#define_CRT_SECURE_NO_WARNINGSttpragmawarning(disable:4996)Convertstointintmyatoi(chars[])(inti,n;n=0;for(i=0;s[i]>='0'&&s[i]くニ'9';++i)(n=n*10+(s[i] 0’);〃n每次先?10,然后再加上對(duì)應(yīng)的個(gè)位上面的數(shù)字,s[i]-’次將

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論