在一次教程學習中,看到該知識點並記錄了下來,但願與你們共同探討學習。c++
1、靜態存儲與動態存儲ide
靜態存儲變量一般是在變量定義時就分定存儲單元並一直保持不變, 直至整個程序結束。動態存儲變量是在程序執行過程當中,使用它時才分配存儲單元,使用完畢當即釋放。動態存儲變量最典型的例子是函教的形式參數,在函數定義時並不給形參分配存儲單元,只是在函數被調用時,才予以分配,調用函數完畢當即釋放,若是一個函數被屢次調用 ,則反覆地分配和釋放形參變量的存儲單元。函數
從以上分析可知,靜態存儲變量是一直存在的 ,而動態存儲變是則時而存在時而消失。 咱們又把這種因爲變量存儲方式不一樣而產生的特性稱變量的生存期。( 見如下腳本 )學習
1 Action() 2 { 3 4 int i; 5 6 //執行函數auto_static 5次 7 for (i=0;i<5;i++) { 8 auto_static(); 9 } 10 11 12 return 0; 13 } 14 15 16 //靜態動態變量測試函數 17 void auto_static(void) 18 { 19 int var_auto=0; //動態變量,每次調用都從新初始化 20 static int var_static=0; //靜態局部變量:只初始化1次 21 lr_output_message("var_auto=%d,var_static=%d\n",var_auto,var_static); //輸出兩個變量的值 22 var_auto++; 23 var_static++; 24 }
你們能夠想一想,兩個變量輸出的都是什麼值:測試
1 Action.c(38): var_auto=0,var_static=0 2 Action.c(38): var_auto=0,var_static=1 3 Action.c(38): var_auto=0,var_static=2 4 Action.c(38): var_auto=0,var_static=3 5 Action.c(38): var_auto=0,var_static=4
2、指針spa
指針是一個存儲計算機內存地址的變量。從指針指向的內存讀取數據稱做指針的取值。指針能夠指向某些具體類型的變量地址,例如int、 long 和double。指針
根據出現的位置不一樣,操做符 * 既能夠用來聲明一個指針變量,也能夠用做指針的取值。當用在聲明一個變量時,表示這裏聲明瞭一個指針。其它狀況用到 * 表示指針的歌值。code
& 是地址操做符,用來引用一個內存地址。經過在變量名字前使用&操做符,咱們能夠獲得該變量量的內存地址。(見如下解本)blog
1 Action() 2 { 3 4 //將var1值賦給變量deref 5 int *ptr; //生命一個int類型的指針變量 6 int deref; 7 int var1 = 35; //定義變量並複製,此時會分配存儲單位,有存儲地址 8 int var = 99; 9 10 ptr = &var; //ptr指向變量var的內存地址,但不能夠把數值賦給指針變量 11 deref = *ptr; //對指針進行取值,打印存儲在指針地址中的內容 12 lr_output_message("var is %d",deref); 13 14 15 return 0; 16 }
輸出的值爲: var is 99教程