一些基本概念
用字元陣列儲存這麼乙個字串:
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...