c語言字串初始化 C 字串

2021-10-17 08:25:59 字數 2168 閱讀 5306

c++ 提供了以下兩種型別的字串表示形式:

c 風格的字串起源於 c 語言,並在 c++ 中繼續得到支援。字串實際上是使用null字元 '0' 終止的一維字元陣列。因此,乙個以 null 結尾的字串,包含了組成字串的字元。

下面的宣告和初始化建立了乙個 "hello" 字串。由於在陣列的末尾儲存了空字元,所以字元陣列的大小比單詞 "hello" 的字元數多乙個。

char greeting[6] = ;
依據陣列初始化規則,您可以把上面的語句寫成以下語句:

char greeting = "hello";
以下是 c/c++ 中定義的字串的記憶體表示:

其實,您不需要把 null 字元放在字串常量的末尾。c++ 編譯器會在初始化陣列時,自動把 '0' 放在字串的末尾。讓我們嘗試輸出上面的字串:

例項#include using namespace std; int main () ; cout << "greeting message: "; cout << greeting << endl; return 0; }

當上面的**被編譯和執行時,它會產生下列結果:

greeting message: hello
c++ 中有大量的函式用來操作以 null 結尾的字串:supports a wide range of functions that manipulate null-terminated strings:

序號函式 & 目的1strcpy(s1, s2);

複製字串 s2 到字串 s1。2strcat(s1, s2);

連線字串 s2 到字串 s1 的末尾。3strlen(s1);

返回字串 s1 的長度。4strcmp(s1, s2);

如果 s1 和 s2 是相同的,則返回 0;如果 s1s2 則返回值大於 0。5strchr(s1, ch);

返回乙個指標,指向字串 s1 中字元 ch 的第一次出現的位置。6strstr(s1, s2);

返回乙個指標,指向字串 s1 中字串 s2 的第一次出現的位置。

下面的例項使用了上述的一些函式:

例項#include #include using namespace std; int main ()

當上面的**被編譯和執行時,它會產生下列結果:

strcpy( str3, str1) : hello

strcat( str1, str2): helloworld

strlen(str1) : 10

現在您可能還無法透徹地理解這個例項,因為到目前為止我們還沒有討論類和物件。所以現在您可以只是粗略地看下這個例項,等理解了物件導向的概念之後再回頭來理解這個例項。

例項#include #include using namespace std; int main ()

當上面的**被編譯和執行時,它會產生下列結果:

str3 : hello

str1 + str2 : helloworld

str3.size() : 10

一維陣列1_linux c語言_嵌入式開發工程師-創客學院​www.makeru.com.cn

學習環境搭建1_linux c語言_嵌入式開發工程師-創客學院​www.makeru.com.cn

資料型別_linux c語言_嵌入式開發工程師-創客學院​www.makeru.com.cn

C語言字串初始化錯誤

在寫指標陣列題目時,遇到數字轉換問題。問題如下 將大於0小於1000的阿拉伯數字轉換為羅馬數字。表示個位數 i,ii,iii,iv,v,vi,vii,viii,ix 表示十位數 x,xx,xl,l,lx,lxx,l xc 表示百位數 c,cc,ccc,cd,d,dc,dcc,dccc,cm 我選擇了...

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陣列的第乙個元...