C 中被預設為const型別的操作舉例

2021-10-02 17:34:56 字數 516 閱讀 5165

下面的例子會從計算機組成原理的角度分析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 或...