字串初始化

2021-07-09 08:54:48 字數 493 閱讀 8213

在**裡,經常會用字串進行初始化操作。比如:

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...