Day1
Q1: C程序的編譯運(yùn)行過(guò)程

Q2: 浮點(diǎn)型的差異表示
p27
計(jì)算機(jī)對(duì)浮點(diǎn)數(shù)的輸出結(jié)果取決于計(jì)算機(jī)內(nèi)部所采用表示浮點(diǎn)數(shù)的格式,由于計(jì)算機(jī)存儲(chǔ)精度有限,無(wú)法表示完全表示浮點(diǎn)書(shū)的小數(shù)部分.
其他
程序與算法的概念
程序: 解決某具體問(wèn)題的計(jì)算機(jī)指令集合.
算法: 解決某具體問(wèn)題的方法.
浮點(diǎn)數(shù)的除法
C語(yǔ)言中整數(shù)與整數(shù)相除得到剔除余數(shù)后的浮點(diǎn)數(shù),但整數(shù)與浮點(diǎn)數(shù)相除可以得到完整的小數(shù).
Day2
Q1: C數(shù)組的創(chuàng)建和訪問(wèn)
聲明
type name[capacity]
聲明并初始化
type name[capacity] = {.....}
訪問(wèn)
type variable = name[index]
通常使用for/while循環(huán)進(jìn)行遍歷數(shù)組
結(jié)構(gòu)設(shè)想圖

Q2: 聲明變量時(shí)的const修飾詞有什么作用?
p111
const修飾詞對(duì)程序運(yùn)行期間不會(huì)發(fā)生變化的變量進(jìn)行標(biāo)記,來(lái)告訴編譯器在編譯過(guò)程中將該變量分配在只讀內(nèi)存中,不允許修改,只能訪問(wèn)原來(lái)的值.
Q3: static 修飾變量時(shí)有什么作用
p156
將變量明確為靜態(tài)變量,執(zhí)行過(guò)程中只會(huì)初始化一次(程序開(kāi)始時(shí)優(yōu)先初始化),并且不會(huì)隨著函數(shù)的調(diào)用和退出發(fā)生變化,值保留為上一次所使用的結(jié)果.
Other
條件操作符
條件操作符即三目操作符的從右向左的關(guān)聯(lián)規(guī)則
e1 ? e2 : e3 ? e4 : e5
編譯結(jié)果為
e1 ? e2 : (e3 ? e4 : e5)
C語(yǔ)言的if-else判斷規(guī)則
所有非零表示滿足條件,零為不滿足條件
Day3
Q1: 如何理解遞歸解決問(wèn)題
p159
將一個(gè)問(wèn)題用?同樣的步驟分解成越來(lái)越小的問(wèn)題子集,最終得出答案.
常見(jiàn)應(yīng)用場(chǎng)景就是多層嵌套括號(hào)的表達(dá)式求值, 樹(shù)和表的搜索和排序.
理解自己調(diào)用自己的過(guò)程也可以看做自己調(diào)用了另外一個(gè)等待返回結(jié)構(gòu)的函數(shù)
Q2: 結(jié)構(gòu)體的初始化和使用
// 先聲明后定義
struct Name {
type a,
type b,
type c
}
struct Name struct1;
struct Name struct2;
// 聲明并定義
struct Name {
type a,
type b,
type c
} struct1,struct2 = {value1, value2, value 3}
結(jié)構(gòu)體語(yǔ)法
// 訪問(wèn)結(jié)構(gòu)體內(nèi)部成員值
struct1.a
//快速賦值
struct1 = { .a =value1, .b = value2, .c = value3}
或
struct1 = (struct Name) {value1, value2, value3}
Q3: 字符串創(chuàng)建使用
創(chuàng)建方式
1- char name[] = "abc....."
2- char name[] = {'a', 'b', 'c', ..... '\0'}
使用注意
- \0 為null字符即空字符,用于讓編譯器識(shí)別字符串的末尾位置,默認(rèn)存在每個(gè)字符串的最后.
- 需要訪問(wèn)字符串中末位有效字符時(shí),要將字符傳長(zhǎng)度-1作為索引值
其他
C函數(shù)
- 在不顯示寫(xiě)明返回類(lèi)型的情況下, C函數(shù)的默認(rèn)返回
Int類(lèi)型結(jié)果,函數(shù)若無(wú)返回最好給函數(shù)寫(xiě)明返回類(lèi)型為Void - 結(jié)構(gòu)體作為函數(shù)參數(shù)進(jìn)行傳遞時(shí),此采用值拷貝傳遞,新拷貝的結(jié)構(gòu)體值得變化不會(huì)影響原來(lái)的結(jié)構(gòu)體
- 數(shù)組作為函數(shù)參數(shù)進(jìn)行傳遞時(shí), 所發(fā)生拷貝傳遞的是數(shù)組所在的內(nèi)存地址,傳遞后對(duì)形參數(shù)組的任何操作,實(shí)際上就是對(duì)原數(shù)組的操作.
Day4
Q1: 怎么理解和使用指針
聲明
type * pointer
指針相關(guān)運(yùn)算符
*指針運(yùn)算符 : * p 表示對(duì)指針變量的值進(jìn)行訪問(wèn);
&地址運(yùn)算符 : &variable 表示對(duì)該變量所在內(nèi)存地址進(jìn)行訪問(wèn);
指針變量與內(nèi)存地址關(guān)系圖

const修飾指針變量
-
const type *point = variable: "point指向一個(gè)某類(lèi)型的常量" 表示point所指向的variable值不可變, 允許指向其他地址. -
type * const point = variable: "point是一個(gè)指向某類(lèi)型的指針常量" 表示point所指向的地址不可變, 此寫(xiě)法更加常用.
函數(shù)指針
表示?指向某一函數(shù)的指針,必須表明函數(shù)的返回值,函數(shù)的參數(shù):
returnType (* point)(type args...) 由于運(yùn)算符優(yōu)先級(jí),中間括號(hào)不能省略.
指針與數(shù)組
C語(yǔ)言默認(rèn)將沒(méi)有下標(biāo)的數(shù)組名作為指向數(shù)組的指針,并且指向數(shù)組的第一個(gè)元素,除此之外 數(shù)組元素的另外種方法獲取
*(?value + i) 等價(jià)于 value[i];
