[C語(yǔ)言回顧]基礎(chǔ)知識(shí)補(bǔ)充

數(shù)組

  • 只能存儲(chǔ)一個(gè)所聲明的數(shù)據(jù)類(lèi)型的數(shù)值的變量稱(chēng)為原子變量(atomic variable)標(biāo)量變量(scalar variable)
  • 一種可以存儲(chǔ)獲取數(shù)據(jù)的方法是使用數(shù)據(jù)結(jié)構(gòu)(data structure)或者叫聚合數(shù)據(jù)類(lèi)型(aggregate data type)
  • 數(shù)組(array)是最簡(jiǎn)單的數(shù)據(jù)結(jié)構(gòu)
一維數(shù)組
  • 由相同數(shù)據(jù)類(lèi)型的單一項(xiàng)目組成的數(shù)組稱(chēng)為一維數(shù)組
  • C語(yǔ)言數(shù)組的開(kāi)始索引值總是0,并且不能改變
  • C語(yǔ)言并不檢查正在使用的索引數(shù)值(即邊界檢查).例如,使用超出聲明數(shù)組長(zhǎng)度的索引值,編譯器不會(huì)通報(bào)這個(gè)錯(cuò)誤
數(shù)組初始化
  • 聲明語(yǔ)句中沒(méi)有給出特定的初始化,所有的數(shù)字?jǐn)?shù)組元素都會(huì)被設(shè)置為0
int distance[100]; //所有元素都為0
  • 當(dāng)初始化數(shù)值包含在聲明語(yǔ)句中時(shí),數(shù)組的大小可以省略
int gallons[ ] = {1,2,3,4,5}; 
int gallons[6] = {1,2,3,4,5}; //兩個(gè)數(shù)組是相等的
  • 初始化字符數(shù)組時(shí),可以使用包含在雙引號(hào)中的字符序列
char codes[] = "sample";
  • 對(duì)于字符數(shù)組來(lái)說(shuō),最后一個(gè)字符為空字符(NULL),由C編譯器自動(dòng)地追加到所有的字符串后面用來(lái)標(biāo)記一個(gè)字符串的結(jié)束;并且這個(gè)字符在內(nèi)部存儲(chǔ)代碼數(shù)值上等于0(字符0在內(nèi)部存儲(chǔ)代碼數(shù)值上等于48,因此兩者不會(huì)被混淆)
數(shù)組作為函數(shù)實(shí)參
  • 當(dāng)數(shù)組作為函數(shù)實(shí)參傳入函數(shù)時(shí),只是將數(shù)組第一個(gè)元素的地址傳入函數(shù),并不會(huì)生成將實(shí)參數(shù)組復(fù)制給形參
void findmax(int vals[]); //可選的函數(shù)首部行
二維數(shù)組
  • 聲明與初始化
int val[3][4]; //二維數(shù)組聲明
int val[3][4] = { {1,2,3,4},
                        {5,6,7,8},
                        {9,10,11,12} }; //初始化,用多個(gè)括號(hào)分開(kāi)
int val[3][4] = { 1,2,3,4,
                        5,6,7,8,
                        9,10,11,12 }; //內(nèi)部括號(hào)可以省略
int val[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 }; //分行也不是必須的,但是是一種好的編程習(xí)慣

字符串

基礎(chǔ)
庫(kù)函數(shù)
輸入數(shù)據(jù)驗(yàn)證
格式化字符串

數(shù)據(jù)文件

聲明,打開(kāi)與關(guān)閉文件流
  • 文件流(file stream)是用于連接存儲(chǔ)在物理設(shè)備上的文件到一個(gè)程序的單向傳輸路徑;從一個(gè)文件接收數(shù)據(jù)到一個(gè)程序的文件流稱(chēng)為輸入文件流(input file stream);發(fā)送(即寫(xiě)入)數(shù)據(jù)到一個(gè)文件的文件流稱(chēng)為輸出文件流(output file stream)
  • 聲明文件流是通過(guò)聲明一個(gè)有FILE類(lèi)型的變量名(指針)來(lái)實(shí)現(xiàn)的
FILE *inFile; //一個(gè)例子
  • 打開(kāi)文件流:打開(kāi)函數(shù)稱(chēng)為fopen(),參數(shù)為文件的外部名,以及文件要被使用的模式;允許的模式有r,w或a,分別代表讀、寫(xiě)或附加
inFile = fopen("prices.bnd", "r"); //一個(gè)例子
  • 關(guān)閉文件流
fclose(inFile);
讀取和寫(xiě)入文本文件
  • 寫(xiě)入
fputc(c, filename) //把一個(gè)字符寫(xiě)入文件
fputs(string, filename) //把一個(gè)字符串寫(xiě)入文件
fprintf(filename, "format", args) //按照格式把一個(gè)參數(shù)的數(shù)值寫(xiě)入文件
fgetc(filename) //從文件中讀取一個(gè)字符
fgets(stringname, n, filename) //從文件讀取n-1個(gè)字符并把字符存儲(chǔ)在給定的字符串名中
fscanf(filename, "format", &args) //根據(jù)這個(gè)格式,從文件讀取所列出的參數(shù)值
  • 我們目前使用的數(shù)據(jù)文件指針都是邏輯文件指針,也就是指向數(shù)據(jù)文件;C語(yǔ)言還支持物理文件指針,即指向一個(gè)硬件設(shè)備,例如鍵盤(pán)、顯示器或打印機(jī);例如在程序中遇到一個(gè)scanf()函數(shù)調(diào)用時(shí),計(jì)算機(jī)自動(dòng)轉(zhuǎn)向標(biāo)準(zhǔn)輸入文件也就是鍵盤(pán)來(lái)獲得輸入的內(nèi)容;遇到一個(gè)printf()函數(shù)時(shí),計(jì)算機(jī)將內(nèi)容寫(xiě)入標(biāo)準(zhǔn)輸出文件指派的設(shè)備,對(duì)于大多數(shù)系統(tǒng)而言是顯示器
  • 從上,我們可以得知printf(),scanf()分別是fprintf(),fscanf()函數(shù)的特例
fprintf(stdout, "Hello World");
printf("Hello World"); //兩個(gè)語(yǔ)句等價(jià)
fscanf(stdin, "%d", &num);
scanf("%d", &num); //兩個(gè)語(yǔ)句等價(jià)
隨機(jī)文件訪問(wèn)
傳遞和返回文件名
寫(xiě)入和讀取二進(jìn)制文件
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容