在**裡,經常會用字串進行初始化操作。比如:
void func(void)
對於上面2條初始化語句,它們的區別是什麼呢?
1,首先,"hello world"是乙個字串常量,存放在靜態常量區。
2,str1是乙個字元陣列,分配在棧上,儲存空間由"hello world"的長度(含'\0')決定,存放的內容由"hello world"進行初始化。 也就是編譯器會把靜態常量區的"hello world"拷貝到棧上的str1陣列區域,對陣列進行初始化。
3,str2是乙個字元指標,指向了靜態常量區"hello world"的首位址。
4,計算長度的區別
strlen(str1)=strlen(str2)
sizeof(str1)=12;
sizeof(str2)=4(x86)or 8(x64)
5,讀寫區別
str1記憶體中的值是可以修改的;
str2指向的記憶體中的值是不可修改的(靜態常量區)。
字串初始化
在c語言程式設計中,當我們宣告乙個字串陣列的時候,常常需要把它初始化為空串。總結起來有以下三種方式 1 char str 10 2 char str 10 3 char str 10 str 0 0 第 1 2 種方式是將str陣列的所有元素都初始化為 0 而第 3 種方式是只將str陣列的第乙個元...
字串初始化
字串初始化使用字串初始化操作符即百分號 標記轉化說明符的開始。在 左邊為格式化字串,右邊為被格式化的值。format hello,s.s enough?values world cold print format values hello,world.cold enough?格式化字串的 s部分為轉...
C 列表初始化,字串初始化
列表初始化 int a 0 int a 全面應用 int a int a 0 預設初始化 定義變數時,沒有指定初值,則變數被預設初始化。定義函式體外的變數被初始化為0,函式體內部的內建型別變數不被初始化。字串初始化 string s1 string s2 s1 string s2 s1 string...