下面的例子會從計算機組成原理的角度分析c++裡面遇到的乙個特殊示例,稍加說明。
如下示例:
#include
using
namespace std;
intmain()
編譯後結果為:
再修改**如下所示:
#include
using
namespace std;
intmain()
編譯後正常出結果
原因分析:
對於第乙個demo而言 char *q = 「abc」; 「abc」在記憶體中的儲存位置是在**段,**段被視為不可寫,所以就相當於 const char * q=「abc」,mmu會異常終止對這段**的寫操作。對於第二個demo而言,char q = 「abc」;q是陣列,其儲存在記憶體中的堆疊(棧)空間內,所以可以被修改。
const 物件預設為檔案的區域性變數
定義非const變數時候,他是可以被其它檔案訪問的,不用引入哪個檔案 只需在使用的地方宣告下,這個變數來之外部extern type name variable name。而const變數不能這樣,預設的是檔案的區域性變數。若要改變這種情況則需特別宣告 extern cconst int a con...
const 物件預設為檔案的區域性變數
定義非const變數時候,他是可以被其它檔案訪問的,不用引入哪個檔案 只需在使用的地方宣告下,這個變數來之外部extern type name variable name。而const變數不能這樣,預設的是檔案的區域性變數。若要改變這種情況則需特別宣告 extern const int a cc.h...
C 型別中的const
常型別是指使用型別修飾符const說明的型別,常型別的變數或物件的值是不能被更新的。因此,定義或說明常型別時必須進行初始化。一般常量和物件常量 1.一般常量 一般常量是指簡單型別的常量。這種常量在定義時,修飾符const可以用在型別說明符前,也可以用在型別說明符後。如 int const x 2 或...