欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言經(jīng)典指針筆試題詳解

 更新時(shí)間:2021年10月08日 09:40:34   作者:小軒在不在喲  
今天博主來講解4道經(jīng)典的指針筆試題,很多朋友沒有深刻理解函數(shù)傳參知識(shí)都會(huì)在這些題目上出錯(cuò),下面話不多說,我們開始

題目一(有關(guān)傳值調(diào)用與非法訪問)

請(qǐng)問運(yùn)行Test 函數(shù)會(huì)有什么樣的結(jié)果?

在這里插入圖片描述

答 :
程序運(yùn)行會(huì)崩潰 ! 且存在內(nèi)存泄漏 ;
原因:

  • 1.str傳給p的時(shí)候,是值傳遞,p是str的臨時(shí)拷貝,所以當(dāng)malloc開辟的空間起始地址放在p中的時(shí)候,不會(huì)影響str,str依然為空指針NULL ;
  • 2.當(dāng)str是NULL,strcpy想把 hello world 拷貝到str指向的空間時(shí),程序就崩潰了。因?yàn)镹ULL指向的空間是不能直接訪問的,造成了非法訪問;
  • 3.malloc開辟的空間沒有free釋放也沒有制空,程序不結(jié)束就會(huì)一直存在,造成了內(nèi)存泄漏;

正確改正方式為:

在這里插入圖片描述

題目二 (返回??臻g地址的問題 )

請(qǐng)問運(yùn)行Test 函數(shù)會(huì)有什么樣的結(jié)果?

在這里插入圖片描述

此類問題是 : 返回??臻g地址的問題
答 :
程序運(yùn)行打印的是隨機(jī)值 ;
原因 :
GetMemory函數(shù)返回的p是數(shù)組名,也就是數(shù)組首元素h的地址 ;
但是 ! GetMemory函數(shù)創(chuàng)建是在??臻g上創(chuàng)建的,return后會(huì)銷毀,空間還給操作系統(tǒng),雖然下面Test函數(shù)中的str存了h的地址,但是如果進(jìn)行打印,原來的空間已經(jīng)被銷毀,打印的內(nèi)容自然不是想要的內(nèi)容;(雖然有可能依然打印出 hello world ,那是因?yàn)榭臻g暫時(shí)還沒被覆蓋使用,本質(zhì)上依然是錯(cuò)誤的)。

題目三 (區(qū)別傳值調(diào)用的傳址調(diào)用)

請(qǐng)問運(yùn)行Test 函數(shù)會(huì)有什么樣的結(jié)果?

在這里插入圖片描述

答 :
雖然能成功打印出 hello world ,但是造成了內(nèi)存泄漏 , 要記得 free 釋放和制空 ;
原因 :
這里傳的是str的地址,區(qū)別題目1的傳值調(diào)用,這里是傳址調(diào)用,形參的改變能影響實(shí)參;
malloc開辟的空間地址交給了str ,str指向了這塊空間,所以strcpy能成功使用這塊空間實(shí)現(xiàn)打印內(nèi)容;
但是沒有釋放malloc動(dòng)態(tài)開辟的這塊空間,也沒有制空,造成了內(nèi)存泄漏 ;

題目四 (free釋放的時(shí)機(jī))

請(qǐng)問運(yùn)行Test 函數(shù)會(huì)有什么樣的結(jié)果?

在這里插入圖片描述

這道題比較簡單 ,解析給在了代碼注釋中 ,大家注意查看 。

🎇結(jié)尾:

有關(guān)這四道經(jīng)典的指針筆試題講解就到此結(jié)束了,如果覺得文章對(duì)自己有所幫助,歡迎大家多多點(diǎn)贊收藏✨ ~

到此這篇關(guān)于C語言經(jīng)典指針筆試題詳解的文章就介紹到這了,更多相關(guān)C語言 指針內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論