const c和c 的編譯區別

2021-09-30 01:25:39 字數 509 閱讀 6126

今天在牛客網上刷題是刷到乙個關於const的題目

const

int i =0;

int*j =

(int*)

&i;*j =1;

printf

("%d,%d"

, i,

*j)

在牛客網中給出的答案是:0,1

而在下面的解析給出了更精確的分析:

c語言中的const是執行時const,編譯時只是定義,在執行才會初始化。c語言中const變數不能用於成為陣列長度等作為編譯時常量的情況,原因就在此。c語言const變數在執行時改變了是可以再次讀出改變後的值的。所以c語言中輸出為1,1.

c++中,const變數是編譯時的常量,可以向#define定義的常量一樣使用。故c++中const變數的值在編譯時就已經確定了,直接對cosnt變數進行了值的替換,因此當const變數的值改變時,const的變數值是不會得到更新的。所以c++語言中輸出為0,1.

C 中的const C 系列文章 1

以下文中有來自對網際網路內容的引用,在此作者對原作者表示感謝!bigleo 看到const 關鍵字,很多程式設計師想到的可能是const 常量,這可有點象踩到陷井上還不知道自己危險了。讀讀以下文字會使你對c 中的const有乙個全面的認識。const 是c 中常用的型別修飾符,有某些微妙的應用場合,...

解釋和編譯的區別

計算機並不能直接地接受和執行用高階語言編寫的源程式,源程式在輸入計算機時,通過 翻譯程式 翻譯成機器語言形式的目標程式,計算機才能識別和執行。這種 翻譯 通常有兩種方式,即編譯方式和解釋方式。編譯方式是指利用事先編好的乙個稱為編譯程式的機器語言程式,作為系統軟體存放在計算機內,當使用者將高階語言編寫...

編譯和鏈結的區別

在多道程式環境中,要想將乙個使用者源 變成乙個可以在記憶體中執行的程式,通常分為三個步驟 編譯 鏈結 載入。1 編譯 由編譯程式將使用者的源 編譯成若干個目標模組。2 3 載入 由引導程式將載入模組載入記憶體。編譯和鏈結都是為將使用者程式從硬碟上調入記憶體並將其轉換為可執行程式服務的。用編譯器時的 ...