www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 芯聞號 > 充電吧
[導(dǎo)讀]2009騰迅校園招聘筆試題:不使用中間變量求const字符串長度,即實(shí)現(xiàn)求字符串長度庫函數(shù)strlen函數(shù)。函數(shù)接口聲明如下:int strlen(const char *p);思路分析:?????“

2009騰迅校園招聘筆試題:不使用中間變量求const字符串長度,即實(shí)現(xiàn)求字符串長度庫函數(shù)strlen函數(shù)。函數(shù)接口聲明如下:int strlen(const char *p);
思路分析:
?????“不使用中間變量”是說程序員不能顯式的申請內(nèi)存,即不能有局部變量或者動態(tài)內(nèi)存申請。如果函數(shù)自動申請棧內(nèi)存或者使用寄存器存儲變量,或者使用立即數(shù)尋址即常量,那么就相當(dāng)于“不使用中間變量”。從函數(shù)原型看,返回值為int,那么在函數(shù)內(nèi)部必定需要一個地方存儲這個值,要么是常數(shù)要么是寄存器。長度不為1時不能一次就求出來,說明必須有遞歸調(diào)用,這樣遞歸時函數(shù)會自動申請棧內(nèi)存,這樣就相當(dāng)于程序員“不使用中間變量”了。中間返回的值通過寄存器自動保存,最后一次返回時拷貝到int中去。C++中也有臨時對象的概念,都是程序在運(yùn)行過程中由編譯器在棧中自動申請的對象,對程序員不可見,也相當(dāng)于“不使用中間變量”
另外一個不申請任何變量的典型題目是:反轉(zhuǎn)字符串
?????? 這種問題都是利用常量,或者將變量的申請交給編譯器在遞歸過程中自動在棧中申請。

#includeusing?namespace?std;

int?mystrlen(const?char*?str)
{
	if(str==NULL)
		return?0;
	if(*str!='