2人贊同了該回答
? static關(guān)鍵字
static關(guān)鍵字具有隱藏式、記憶、延長生命周期的作用。
在C語言中,static既可以修飾變量,也可以修飾函數(shù)。
在C++中,static既可以修飾成員變量,也可以修飾成員函數(shù)。
靜態(tài)變量與全局變量的區(qū)別
全局變量與局部變量的區(qū)別
const關(guān)鍵字
const關(guān)鍵字在一定程度上可以提高程序的安全性和可靠性。
C語言中,const可以修飾普通變量,指針,函數(shù)形參,函數(shù)返回值。
C++中,const可以修飾成員變量、成員函數(shù)、類對象、引用、
const與#define的區(qū)別:
const修飾的常量可以排除程序間的不安全性因素,保證程序中的常量不被修改,并且會進(jìn)行類型的安全檢查,提高了程序的健壯性,最好用const來定義常量,而不是define。
宏定義的優(yōu)缺點(diǎn):
優(yōu)點(diǎn):
缺點(diǎn):
枚舉與宏定義的區(qū)別
typedef與define的區(qū)別
#define int* INTPTR1
typedef INTPTR2 int*;
INTPTR1 a,b;//int *a, b;
INTPTR2 c,d;//int *c, *d;
宏函數(shù)與函數(shù)有什么區(qū)別?
宏函數(shù)與內(nèi)聯(lián)函數(shù)的區(qū)別
內(nèi)聯(lián)函數(shù)與普通函數(shù)的區(qū)別
volatile關(guān)鍵字的含義
volatile修飾的變量,每次使用它時(shí)都會去內(nèi)存讀取,而不是寄存器中的備份。編譯器不會對該類變量進(jìn)行優(yōu)化。
volatile一般修飾多線程中多個任務(wù)共享的變量、中斷子程序中會訪問到的非自動變量和并行設(shè)備硬件寄存器。
一個變量用const修飾的同時(shí)還可以用volatile修飾,原因是const表明這個對象體現(xiàn)常量語義,程序不應(yīng)該試圖修改它,但同時(shí)可能會被當(dāng)前對象所在程序上下文意外的情況修改,此時(shí)可加上volatile。
explicit關(guān)鍵字的作用
explicit用于修飾含有一個參數(shù)的構(gòu)造函數(shù),表明該構(gòu)造函數(shù)是顯式的,禁止編譯器進(jìn)行非預(yù)期的類型轉(zhuǎn)換。effective C++中建議使用該關(guān)鍵字修飾構(gòu)造函數(shù)。
struct和union的區(qū)別
C語言中的struct與C++中的struct的區(qū)別
C++中struct與class的區(qū)別
new/delete和malloc/free的區(qū)別
有new/malloc,就要有delete/free,否則會造成內(nèi)存泄漏。free/delete結(jié)束后,并不是將內(nèi)存直接返回給操作系統(tǒng),而是告訴操作系統(tǒng),這段內(nèi)存可用作其他用途,但是沒有重新對這塊內(nèi)存進(jìn)行寫操作,以前的數(shù)據(jù)沒有變化,造成野指針,需要將其置為NULL。
sizeof和strlen的區(qū)別
sizeof是關(guān)鍵字,strlen是函數(shù)
sizeof的結(jié)果是創(chuàng)建的最大對象的字節(jié)大小,strlen返回的是字符串的長度,不包括‘0’
sizeof可以用類型做參數(shù),strlen只能用char*做參數(shù),并且必須以’0’結(jié)尾。
用數(shù)組名做參數(shù)時(shí),sizeof不退化,strlen退化為指針。
sizeof在編譯的時(shí)候計(jì)算,strlen在運(yùn)行的時(shí)候計(jì)算。
sizeof返回值類型以及靜態(tài)分配的對象、結(jié)構(gòu)或數(shù)組所占的大小、返回值與對象、結(jié)構(gòu)、數(shù)組所存儲的內(nèi)容沒有關(guān)系;strlen只關(guān)心存儲的數(shù)據(jù)內(nèi)容,不關(guān)心空間的大小和類型。
struct的sizeof是所有成員對齊后的長度相加,union的sizeof是最大的成員長度。
exit與return的區(qū)別
ASEERT()和assert()
ASEERT()稱為斷言,是調(diào)試程序時(shí)用的宏,檢查非法錯誤,只存在Debug版本中,Release版本中則被忽略。
ASSERT()是宏,而assert()是函數(shù),用法和ASEERT()類似,但是可以出現(xiàn)在Realease版本中,需要注意的是:
————————————————
版權(quán)聲明:本文為CSDN博主「zm1_1zm」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/zm1_1zm/article/details/76919136
發(fā)布于2023-06-12