c++ - 程序中常量的定义
PHP中文网
PHP中文网 2017-04-17 13:54:08
0
4
560
#define SIZE 100;
const int size = 100;

他们有什么区别

    char b[4] ;
    char (*pb)[4] = &b;//正常

b 是一个指针常量 ,也可以说是一个整形常量,可不可以理解是第二种情况,可以取地址,但不能赋值

b在内存中,有没有自己的空间

PHP中文网
PHP中文网

认证0级讲师

全部回覆(4)
巴扎黑
  1. define巨集是在預處理階段展開,const是在編譯運行時

  2. define不帶型別也不做安全檢查,const帶型,在編譯階段會執行安全檢查

  3. define佔用程式碼空間;const是變數定義,佔用資料段空間,效率更高

洪涛

define 巨集定義只是在編譯器的預處理(Preprocessing)階段進行單純的文字替換,也就是正式開始編譯時,你程式碼裡SIZE都會被替換成100。編譯報錯或執行時如果出了問題,你只能知道是100出了問題,SIZE對你來說是不可見的,這樣不利於Debug。而使用常數就不會有這樣的問題。

你下面的程式碼,看著雖然彆扭,但是沒問題。 b是堆疊上分配的變量,自然佔用了記憶體空間。

迷茫

@鬍鬚老頭似乎沒有分配

調試資訊:

堆疊上沒有分配空間,沒給b分配空間,賦值使用lea
堆疊開闢16個位元組,陣列佔8個,pa佔4個,還有4個未使用

左手右手慢动作

C語言學得不是很好,錯了煩請指正^_^

char b[4] ;
char (*pb)[4] = &b;//正常

b是一個4B的數組;
pb是一個數組指針,指向b的內存空間,所以可以通過讀取pb的內容得到b的地址,但是pb+1就指到了b的末尾位元組之後了。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板