C/C++基礎(chǔ)知識

1. C 語言的 malloc 和 C++ 中的 new 有什么區(qū)別?

2.?簡述strcpy、sprintf 與memcpy 的區(qū)別?

3. 什么是函數(shù)指針?

函數(shù)指針的定義方式為:

函數(shù)返回值類型 (* 指針變量名) (函數(shù)參數(shù)列表);

“函數(shù)返回值類型”表示該指針變量可以指向具有什么返回值類型的函數(shù);“函數(shù)參數(shù)列表”表示該指針變量可以指向具有什么參數(shù)列表的函數(shù)。這個參數(shù)列表中只需要寫函數(shù)的參數(shù)類型即可。

函數(shù)指針的定義就是將“函數(shù)聲明”中的“函數(shù)名”改成“(*指針變量名)”。但是這里需要注意的是:“(*指針變量名)”兩端的括號不能省略,括號改變了運(yùn)算符的優(yōu)先級。如果省略了括號,就不是定義函數(shù)指針而是一個函數(shù)聲明了,即聲明了一個返回值類型為指針型的函數(shù)。

那么怎么判斷一個指針變量是指向變量的指針變量還是指向函數(shù)的指針變量呢?首先看變量名前面有沒有“*”,如果有“*”說明是指針變量;其次看變量名的后面有沒有帶有形參類型的圓括號,如果有就是指向函數(shù)的指針變量,即函數(shù)指針,如果沒有就是指向變量的指針變量。

最后需要注意的是,指向函數(shù)的指針變量沒有 ++ 和 -- 運(yùn)算。

4. C語言的指針和引用和c++的有什么區(qū)別?

1) 指針有自己的一塊空間,而引用只是一個別名;

2) 使用sizeof看一個指針的大小是4,而引用則是被引用對象的大?。?/p>

3) 作為參數(shù)傳遞時,指針需要被解引用才可以對對象進(jìn)行操作,而直接對引用的修改都會改變引用所指向的對象;

4) 可以有const指針,但是沒有const引用;

5) 指針在使用中可以指向其它對象,但是引用只能是一個對象的引用,不能被改變;

6) 指針可以有多級指針(**p),而引用止于一級;

7) 指針和引用使用++運(yùn)算符的意義不一樣;

8) 如果返回動態(tài)內(nèi)存分配的對象或者內(nèi)存,必須使用指針,引用可能引起內(nèi)存泄露。為什么?

(new?出來的對象?是個地址,以后delete?也要這份地址,但是不可以delete?引用。這個不是必須使用指針,是new返回的就是指針,指向內(nèi)存的地址。設(shè)計上?指針是為了兼容C而存在 ,引用是為了重載而存在。)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容