C C 程式設計 常量初始化

2021-10-21 14:57:50 字數 599 閱讀 6276

常量初始化指的是:設定static變數的初值為編譯時常量。語法如下

靜態及執行緒區域性物件的常量取代零初始化,並早於所有其他初始化進行。僅下列變數進行常量初始化:

常量初始化的效果與其所對應的初始化的效果相同,但保證它在任何其他靜態或執行緒區域性物件的初始化前完成,並可能在編譯時進行。

如果編譯器可以保證其值與當遵循初始化的標準順序時的結果相同,則允許其用常量初始化對其他的靜態及執行緒區域性物件進行初始化。

實踐中,常量初始化在編譯時進行,並將預先計算的物件表示作為程式映像的一部分(如 .data 段)儲存。若變數既為 const 又被常量初始化,則其物件表示可儲存於程式映像的唯讀段(如 .rodata 段)。

#include

#include

struct s

;const

int d =

10* s::c;

// 非常量表示式:s::c 此前無初始化器,此初始化發生晚於常量初始化

const

int s::c =5;

// 常量初始化,保證首先發生

intmain()

關於C C 初始化

1 使用函式進行初始化 void memset void s,int ch,size t n 將s中前n個位元組 typedef unsigned int size t 用 ch 替換並返回 s 在使用之前,c中引入string.h,而c 中引入cstring 1 初始化整數陣列 const int...

關於C C 初始化

1 使用函式進行初始化 void memset void s,int ch,size t n 將s中前n個位元組 typedef unsigned int size t 用 ch 替換並返回 s 在使用之前,c中引入string.h,而c 中引入cstring 1 初始化整數陣列 const int...

靜態成員常量初始化

靜態常量的問題 樓主waxic waxic 2006 03 06 11 05 24 在c c c 語言 提問在 類定義中定 義乙個靜態常量 在友員函式中不能 訪問 標頭檔案 class string 類描述檔案中 void function1 string st 這樣對嗎?我在 vc中編譯不能通過問...