亚洲免费人人妻人人,cao78在线视频,福建一级毛片,91精品视频免费观看,高清另类图片操逼,日本特黄特色大片免费看,超碰欧美人人澡曰曰澡夜夜泛

查找棧的增長方向的分析及C代碼實現(xiàn) -電腦資料

電腦資料 時間:2019-01-01 我要投稿
【www.msguai.com - 電腦資料】

    對于棧這種數(shù)據(jù)結(jié)構(gòu),大家應(yīng)該不會陌生,它是一種后進(jìn)先出的數(shù)據(jù)結(jié)構(gòu),

查找棧的增長方向的分析及C代碼實現(xiàn)

。在一般的計算機(jī)系統(tǒng)中,棧存在著兩種存放數(shù)據(jù)的方式,一種是向上增長的,一種是向下增長的,如圖1所示。

    vc/yPC9wPg0KPHA+1NrNvDG1xChhKdbQo6zVu8rHz/LJz9T2s6S1xKOsvLTK/b7dQbbU06a1xLXY1rfQodPayv2+3UK21NOmtcS12Na3o7vU2s28MbXEKGIp1tCjrNW7ysfP8s/C1PazpLXEo6y8tMr9vt1BttTTprXEtdjWt7Tz09rK/b7dQrbU06a1xLXY1rehozwvcD4NCjxwPsTHw7SjrM7Sw8fU9dH5wLSy6b+0KNfuusPTw7PM0PIp19S8usv5yrnTw7XEz7XNs9bQtcTVu7XE1PazpLe9z/K1vbXXyvTT2sTE0rvW1sTYo78o16KjutXiysfO0sW8yLvU2s34yc+/tLW9tcTSu7j2zsrM4qGjKTwvcD4NCjxwPs7Sw8fWqrXAo6zX986q0rvW1rOj08O1xMr9vt294bm5o6zVu9b30qrTw9PatOa3xbPM0PLW0LXEvtayv7Hkwb+6zbqvyv21xMrkyOuyzsr9oaPEx8O0o6zO0sPHvs2/ydLUyei8xtK7uPazzNDyo6zU2rPM0PLW0M2ouf2xyL3PxLPSu7j2vtayv7Hkwb+1xMewuvPBvbTOtcS12Na31rXAtMXQts/Vu7XE1PazpLe9z/Kho8D708PV4rj2z+u3qLHg0LSz9sC0tcSzzNDyyOfPwsv5yr6jujwvcD4NCjxwcmUgY2xhc3M9"brush:java;">/*********************************************************************** 版權(quán)所有 (C)2015, Zhou Zhaoxiong。** 文件名稱:FindStackDirection.c* 文件標(biāo)識:無* 內(nèi)容摘要:查看棧的增長方向* 其它說明:無* 當(dāng)前版本:V1.0* 作 者:Zhou Zhaoxiong* 完成日期:20151202***********************************************************************/#include// 重定義數(shù)據(jù)類型typedef unsigned char UINT8;typedef signed int INT32;// 函數(shù)聲明void FindStackDirection(void);/*********************************************************************** 功能描述:主函數(shù)* 輸入?yún)?shù):無* 輸出參數(shù):無* 返 回 值:無* 其它說明:無* 修改日期 版本號 修改人 修改內(nèi)容* ---------------------------------------------------------------* 20151202 V1.0 Zhou Zhaoxiong 創(chuàng)建***********************************************************************/INT32 main(){ FindStackDirection(); return 0; }/*********************************************************************** 功能描述:查找棧增長方向* 輸入?yún)?shù):無* 輸出參數(shù):無* 返 回 值:無* 其它說明:無* 修改日期 版本號 修改人 修改內(nèi)容* ---------------------------------------------------------------* 20151202 V1.0 Zhou Zhaoxiong 創(chuàng)建***********************************************************************/void FindStackDirection(void){ UINT8 iStackAddr = 0; // 用于獲取棧地址 static UINT8 *pStackAddr = NULL; // 用于存放第一個iStackAddr的地址 if (pStackAddr == NULL) // 第一次進(jìn)入 { pStackAddr = &iStackAddr; // 保存iStackAddr的地址 FindStackDirection(); // 遞歸 } else // 第二次進(jìn)入 { if (&iStackAddr > pStackAddr) // 第二次iStackDirection的地址大于第一次iStackDirection, 那么說明棧增長方向是向上的 { printf(Stack grows up!); } else if (&iStackAddr < pStackAddr) // 第二次iStackDirection的地址小于第一次iStackDirection, 那么說明棧增長方向是向下的 { printf(Stack grows down!); } else { printf(Bad stack!); } }}

    我們可以看到,函數(shù)FindStackDirection中出現(xiàn)了遞歸調(diào)用,即首次進(jìn)入該函數(shù)的時候,將iStackAddr變量(局部變量)的地址值賦給pStackAddr,第二次進(jìn)入該函數(shù)的時候,用新的iStackAddr變量的地址值與第一次進(jìn)入該函數(shù)時iStackAddr變量的地址值相比較,如果前者大于后者,那么說明棧增長方向是向上的,否則,說明棧增長方向是向下的,

電腦資料

查找棧的增長方向的分析及C代碼實現(xiàn)》(http://www.msguai.com)。

    將以上代碼上傳到Linux機(jī)器上,使用“gcc -g -o FindStackDirection FindStackDirection.c”命令對程序進(jìn)行編譯之后,運行“FindStackDirection”命令,結(jié)果如下:

    Stack grows down!

    即我所使用的系統(tǒng)中的棧的增長方向是向下的。大家也可以將以上代碼在自己的系統(tǒng)中運行一下,看看結(jié)果是什么。

    在大部分人(包括我)的印象中,棧的增長方向只有一種,那就是向上(如圖1中的(a)),但程序運行出來的結(jié)果與我們預(yù)期的恰恰相反。從這點也可以看出,計算機(jī)系統(tǒng)在設(shè)計上的精妙與復(fù)雜,里面有很多東西都值得我們細(xì)細(xì)研究的。

最新文章