c/c++中使用字串的頻率還是比較高的,下面就字串的不同定義及其使用方法做一些對比
字串一般有以下三種定義方法:
1、char *p="hello";
2、char str[6]="hello";
3、string s="hello";
【第一種字串】:這種定義方式會被編譯器預設為字串常量,自行預設為是不會被改變的,所以編譯時會被儲存在乙個唯讀的資料段中,嘗試對這種型別字串的改變是不被允許的。
如:
char *p="hello";
p[1]='
x';
這個時候,輸出字串就會爆出"段錯誤"(我這裡的實驗平台是linux,會和windows有所不同),因為修改了記憶體唯讀區域,這是不允許的;
【第二種和第三種字串】:這種定義方式實際上是把存在唯讀資料段中的字串複製到了乙個字元陣列中,這種字串中的任意字元都可以被隨便改變,這裡不再做出演示。
*注意一下情況:
char *str1="hello";
char *str2="
hello
";
if(str1==str2)
cout
<<"
str1=str2
"<*linux下定義字串爆出warning的處理方法:在定義字串時加上const限定修飾符,告訴編譯器這是常量,否則g++/gcc都會認為是變數,所以會爆出warning
字串對比
字串對比 vip 問題描述 給定兩個僅由大寫字母或小寫字母組成的字串 長度介於1到10之間 它們之間的關係是以下4中情況之一 1 兩個字串長度不等。比如 beijing 和 hebei 2 兩個字串不僅長度相等,而且相應位置上的字元完全一致 區分大小寫 比如 beijing 和 beijing 3 ...
字串對比
問題描述 給定兩個僅由大寫字母或小寫字母組成的字串 長度介於1到10之間 它們之間的關係是以下4中情況之一 1 兩個字串長度不等。比如 beijing和 hebei 2 兩個字串不僅長度相等,而且相應位置上的字元完全一致 區分大小寫 比如beijing 和 beijing 3 兩個字串長度相等,相應...
字串對比
題目內容 題目說起來很簡單,你會讀到兩個字串,每個字串佔據一行,每個字串的長度均小於10000字元,而且第乙個字串的長度小於第二個字串的。你的程式要找出第乙個字串在第二個字串中出現的位置,輸出這些位置,如果找不到,則輸出 1。注意,第乙個字元的位置是0。注意,第乙個字串在第二個字串中的位置可能不止一...