編譯器將固定字元串放在固定位置
① 將一個字元串插入到另一個字元串的指定位置的題目(用C語言解決)
1、參數2去掉與參數1相同的字元串。
② C中字元串的幾種定義方法及說明
在C語言中,定義字元串有多種方法,包括字元串常量、字元數組以及字元指針。字元串常量是一種特殊的常量,通常用雙引號括起來,如"hello",其中包含了編譯器自動添加的結束標志\0。如果字元串中沒有空格或者有連續的空格,ANSI C會將它們視為一個整體。例如:
char greeting[50] = "hello,and" "how are" "you";
這等同於:
char greeting[50] = "hello,and how are you";
字元串常量屬於靜態存儲類型,意味著它們在整個程序運行期間只存儲一份。這與數組名作為指向數組存儲位置的指針相似。
字元串數組及其初始化可以通過指定數組大小來實現,例如:
char m[40] = "hello,world";
定義時需指定數組大小(整型常量),且數組大小應比預定大小多一個,以便編譯器自動添加'\0'。多餘的元素會被初始化為'\0'。例如:
char m={'h','e','l','\0'};
注意,標志結束的空字元是必要的,否則得到的只是一個字元數組而非字元串。
利用字元指針定義字元串的語法為:
char *m = "hello,world";
此時字元串指針m指向的是字元串常量,不能通過*(m+1)='o'來修改此常量,因為這個字元串常量存放在常量區,不能被修改。
數組形式和指針形式有何區別?數組形式:
char m[40] = "hello,world";
編譯器將數組名m視為數組首元素的地址&m[0]的同義詞,m是地址常量。可以使用m+1來標識數組中的下一個元素,但不能使用++m,增量運算符只能在變數前使用,而不能在常量前使用。
m[40]在內存中被分配一個有40個元素的數組(每個元素對應一個字元,還有一個附加的元素對應結束的空字元'\0')。每個元素都被初始化為相應的字元。通常,被引用的字元串存儲在可執行文件的數據段部分;當程序載入到內存中時,字元串也被載入到內存中,被引用的字元串被復制到數組中。
指針形式:
指針形式(*m)也會在靜態存儲區為字元串預留空間。此外,程序開始執行時,還需為指針變數m另外預留一個存儲位置,以便在該指針變數中存儲字元串的地址。m指向字元串的第一個字元,可用++m指向第二個字元。
指針m是個變數。