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