中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
C語言編程技巧:如何在函數(shù)中正確返回字符串的指針

問題提出

C語言編程中,我們經(jīng)常會遇到這種情況,在某個函數(shù)中經(jīng)過算法處理以后得到一個字符串類型的結(jié)果,可能需要將這個字符串以指針的形式進行返回,那么如何在函數(shù)中正確返回該字符串的內(nèi)容呢?

例如,定義一個函數(shù),要求該函數(shù)能夠返回一個指向字符串I love C.”的指針并能在主程序中正確得到該字符串的內(nèi)容。對于初學(xué)者來說,當看到這個題目時,感覺并不難做到,可能很容易的寫出下面形式的代碼:

 

  

代碼中定義了一個函數(shù)getString1,其目的是返回“I love C.”字符串。該函數(shù)返回值是char類型的指針,在函數(shù)內(nèi)部定義了一個char類型包括20個元素的數(shù)組str并賦值為“I love C.”,然后返回數(shù)組的名稱str,即字符串的地址。

乍一看,該函數(shù)寫的沒問題,似乎在主程序中調(diào)用該函數(shù)能得到正確的字符串內(nèi)容I love C.”,但實際上,這種方式并不能達到我們的目的。

其原因是,在函數(shù)內(nèi)部定義的str數(shù)組是一個局部變量,將“I love C.”字符串存放在里面,當函數(shù)調(diào)用結(jié)束時,局部變量的內(nèi)容將被操作系統(tǒng)自動收回,所以在主程序調(diào)用時,隨著函數(shù)getString1調(diào)用的結(jié)束,其內(nèi)部的str數(shù)組也就不存在了,自然也就不能將它里面20個元素的內(nèi)容返回到主程序中了。

函數(shù)中返回字符串指針的正確方法

那么,如何在函數(shù)中正確返回字符串的內(nèi)容呢?實際上,我們只要對上面的函數(shù)作一下修改,如下圖所示就可以了:

 

  

該函數(shù)getString2同上面的getString1的區(qū)別是,在函數(shù)內(nèi)部定義了一個指向char類型的指針p,該指針指向一個字符串常量I love C.”,我們知道,這個字符串“I love C.”存放在整個程序的常量區(qū),而并不是getString2的局部變量,也就是說,在程序整個的運行周期內(nèi),該字符串“I love C.”常量始終存在,并不會因為函數(shù)調(diào)用的結(jié)束而消失。

所以,指針變量p雖然是一個局部變量,但p本身的值僅僅是一個4個字節(jié)的指針地址值,這個地址值也就是“I love C.”的字符串的地址值。當函數(shù)調(diào)用結(jié)束時,雖然p局部變量不存在了,但可以將這個地址(僅4個字節(jié))返回到主程序中,在主程序中通過這個地址值,我們是可以得到這個字符串“I love C.”的。

對比一下,字符串I love C.”在getString1函數(shù)中存儲在局部變量區(qū),而在getString2函數(shù)中存儲在整個程序的常量區(qū),所以在getString2函數(shù)中將該常量區(qū)的地址返回,在主程序可以通過該地址得到這個字符串的內(nèi)容。

C語言完整的測試代碼

針對上面的兩種情況,完整的C語言測試代碼如下:

 

  

其運行結(jié)果如下圖所示:

 

  

可見,getString1函數(shù)輸出的是亂碼,而getString2函數(shù)正確的輸出了字符串的內(nèi)容。

總結(jié)

通過這個例子大家可以理解怎樣在函數(shù)中正確返回一個字符串的指針,也可以理解C語言程序中不同變量的作用域范圍。

 

如果你覺得這篇文章對你有用的話,請不要忘記點贊哦。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
關(guān)于函數(shù)返回值為指針類型的分析
C語言中的函數(shù)指針與指針函數(shù)
『C程序設(shè)計』讀書筆記
關(guān)于CONST的用法
關(guān)于函數(shù)返回局部指針的總結(jié)(大部分來自網(wǎng)文)
函數(shù)的返回類型為指針類型時的若干思考(字符串常量問題)
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服