關於字串

2021-06-06 04:48:19 字數 1135 閱讀 3846

一些基本概念

用字元陣列儲存這麼乙個字串:

char str = "hello world";
然後我們應該知道,

1.陣列的大小是12(字串字元個數+1),最後乙個元素為'\0',用於標記字串的結束。'\0'不是數字0,它是非列印字元,其ascii碼值為0

2.若使用如下定義:

char str[100] = "hello world";
則多餘元素的值均預設為'\0'

3.使用scanf時,該函式會自動將'\0'插入在字串末尾(所以你不必輸入,也無法輸入)

字元陣列和指向字串的指標

下面兩種定義都是可行的:

char str = "hello world";

char * ps = "hello world";

但也有不同之處,如:

str[4] = 'p';  //可以

ps[4] = 'p'; //錯誤

這個問題不同於整型陣列和整型指標,根源在於字串常量:字串常量被存放於靜態儲存區

編譯器會為字元陣列str開闢一片記憶體空間,並把靜態儲存區中的字串常量"hello world"拷貝過去;而指標ps只是單純地指向靜態儲存區,上述修改可能會產生一些問題:

因此編譯器禁止這麼做(奇怪的是gcc可通過,但執行時會段錯誤)

常用字串函式

size_t strlen(const char * str); //返回字串長度(不計算'\0'在內)

char * strcpy(char * str1, const char * str2); //將str2拷貝至str1中(包括'\0'),同時返回str1

char * strcat(char * str1, const char * str2); //把str2拷貝至str1底部(str1原有的'\0'被覆蓋),同時返回str1

int strcmp(const char * str1, const char * str2); //比較兩個字串,若str1

關於字串

關於string最重要的幾點 string為引用型別體現於其在棧記憶體和堆記憶體中的結構 堆記憶體中有字串常量池。有幾種new字串的方式 string str ass 方式1 string str1 new string ass 方式2char cha string str2 new string ...

關於MYSQL字串

字串是多個字元組成的乙個字串行,由單引號 或雙引號 字元包圍。但在 ansi 模式中執行時只能用單引號 例如 a string another string 在乙個字串中,如果某個序列具有特殊的含義,每個序列以反斜線符號 開頭,稱為轉義字元。mysql 識別下列轉義字元 0 乙個 ascii 0 n...

關於字串駐留

首先看幾個例子 示例1 static void main 示例2 static void main 示例3 public const string s1 abc static void main 示例4 public static string s1 abc static void main 示例1...