#define SIZE 100;
const int size = 100;
他们有什么区别
char b[4] ;
char (*pb)[4] = &b;//正常
b 是一个指针常量 ,也可以说是一个整形常量,可不可以理解是第二种情况,可以取地址,但不能赋值
b在内存中,有没有自己的空间
巴扎黑2017-04-17 13:56:08
define巨集是在預處理階段展開,const是在編譯運行時
define不帶型別也不做安全檢查,const帶型,在編譯階段會執行安全檢查
define佔用程式碼空間;const是變數定義,佔用資料段空間,效率更高
PHP中文网2017-04-17 13:56:08
define 巨集定義只是在編譯器的預處理(Preprocessing)階段進行單純的文字替換,也就是正式開始編譯時,你程式碼裡SIZE都會被替換成100。編譯報錯或執行時如果出了問題,你只能知道是100出了問題,SIZE對你來說是不可見的,這樣不利於Debug。而使用常數就不會有這樣的問題。
你下面的程式碼,看著雖然彆扭,但是沒問題。 b是堆疊上分配的變量,自然佔用了記憶體空間。
ringa_lee2017-04-17 13:56:08
C語言學得不是很好,錯了煩請指正^_^
char b[4] ;
char (*pb)[4] = &b;//正常
b
是一個4B
的數組;pb
是一個數組指針,指向b
的內存空間,所以可以通過讀取pb
的內容得到b
的地址,但是pb+1
就指到了b
的末尾位元組之後了。