2 回答

TA貢獻(xiàn)1725條經(jīng)驗(yàn) 獲得超8個(gè)贊
初始化這個(gè)工作可以交給使用這個(gè)函數(shù)的人來(lái)完成,也可以由寫(xiě)這個(gè)函數(shù)的人來(lái)完成;并且在設(shè)計(jì)這個(gè)函數(shù)的時(shí)候就要確定好,指針參數(shù)是在外面初始化還是進(jìn)了函數(shù)在初始化.通常"寫(xiě)函數(shù)的人"和"使用函數(shù)的人"可能是同一個(gè)人,但是扮演著2種不同的角色
這一點(diǎn)在函數(shù)說(shuō)明里要講清楚,這樣使用這個(gè)函數(shù)的人才知道該傳遞一個(gè)未初始化的指針參數(shù)還是傳遞一個(gè)已經(jīng)初始化的指針參數(shù).
就象MSDN文檔里關(guān)于函數(shù)的說(shuō)明那樣,參數(shù)是什么,返回值是什么,函數(shù)作用是什么,使用時(shí)的注意點(diǎn)都寫(xiě)得清清楚楚.這樣,使用這個(gè)函數(shù)的人就知道該傳遞一個(gè)怎樣的參數(shù)進(jìn)去.
假如傳遞的是一個(gè)初始化的參數(shù)進(jìn)去,那么在調(diào)用這個(gè)函數(shù)之前,必須有類(lèi)似的初始化的操作
SimpleCat *theCat=new SimpleCat;//SimpleCat *theCat=(SimpleCat *)malloc(sizeof(SimpleCat));
或者SimpleCat aCat;SimpleCat *theCat=&aCat;
SimpleCat Frisky;
FunctionTwo (&Frisky);
這個(gè)就和"或者部分"的代碼差不多,省去了SimpleCat *theCat=&aCat這步,直接在調(diào)用函數(shù)的時(shí)候調(diào)用了&aCat;
因?yàn)榉祷氐膮?shù)是一個(gè)地址,可以賦值給一個(gè)指針變量,該變量有沒(méi)有初始化都可以.沒(méi)有初始化的話(huà)相當(dāng)于初始化,初始化了的話(huà)相當(dāng)于重新賦值.

TA貢獻(xiàn)1886條經(jīng)驗(yàn) 獲得超2個(gè)贊
這是聲明,不是定義變量,沒(méi)有變量,何來(lái)初始化?你甚至可以把theCat去掉。
問(wèn)題補(bǔ)充:
這是函數(shù)定義,你前面的是函數(shù)聲明。theCat指針變量的初始化是由主調(diào)函數(shù)完成的,F(xiàn)unctionTwo函數(shù)不必理會(huì),也不應(yīng)理會(huì),直接拿來(lái)用就行。
添加回答
舉報(bào)