程式設計技巧 C 字串初始化的優化寫法

2021-09-05 06:20:22 字數 673 閱讀 7658

c++中,有很多種字串變數初始化方式,最常見的寫法是:

wchar szbuffer[128] = ;  或者 wchar szbuffer[128] = l"";

其實這種寫法的**效率比較低,因為編譯之後的彙編**呼叫了 memset 函式。      

wchar szbuffer[128] = ;

04906922  mov         word ptr [szbuffer],0

0490692b  push        0feh

04906930  push        0   

04906932  lea         ecx,[ebp-13eh]

04906938  push        ecx 

04906939  call        memset (4807c7ah)

正確的初始化寫法應該是:

wchar szbuffer[128];

szbuffer[0] = 0;

雖然c++**比較醜陋,但是彙編碼卻是很簡介的。 編譯之後產生的彙編碼只有:

04906922  mov         word ptr [szbuffer],0

總結: c++ 程式設計中很值得注意一點就是,c++ **的簡介並不一定能夠帶來效率,有時候繁瑣的c++ **反而效率是最高的。

C 列表初始化,字串初始化

列表初始化 int a 0 int a 全面應用 int a int a 0 預設初始化 定義變數時,沒有指定初值,則變數被預設初始化。定義函式體外的變數被初始化為0,函式體內部的內建型別變數不被初始化。字串初始化 string s1 string s2 s1 string s2 s1 string...

字串初始化

在c語言程式設計中,當我們宣告乙個字串陣列的時候,常常需要把它初始化為空串。總結起來有以下三種方式 1 char str 10 2 char str 10 3 char str 10 str 0 0 第 1 2 種方式是將str陣列的所有元素都初始化為 0 而第 3 種方式是只將str陣列的第乙個元...

字串初始化

在 裡,經常會用字串進行初始化操作。比如 void func void 對於上面2條初始化語句,它們的區別是什麼呢?1,首先,hello world 是乙個字串常量,存放在靜態常量區。2,str1是乙個字元陣列,分配在棧上,儲存空間由 hello world 的長度 含 0 決定,存放的內容由 he...