字串崩潰

2021-08-18 14:57:57 字數 513 閱讀 3047

先看一段**

char * str1 = "abcde";

char   str2= "abcde";

str1[0] = 'x';

str2[0]  ='x';

猜想一下這段**是否正確?

答案是編譯正確,但是執行時崩潰。因為語法上str1[0] = 'x';  等價於*(str1)=『x;  str2[0]  ='x';  都沒有錯誤。執行時崩潰是因為str1和str2儲存方式是不同的,str1是四個位元組而且儲存的是字串常量的首位址,str2六個位元組儲存的是a,b,c,d,e,\0,字串常量是不予許被修改的。

strcpy(str1 , 'xyz'); 

strcpy(str2 , "hellow word");

這兩句同樣錯誤,原因(1)字串常量不能修改(2)長度超出,越界了

利用gets函式輸入字串時很容易出現問題,想要找的出錯點較難,因為很可能是因為其他函式塊的影響並不是本函式塊的問題。看下面這段** :

int main( )

ORACLE in 字串,字串,字串

因為傳進來的引數是 字串,字串,字串,要實現in 字串,字串,字串 select from htl price p where p.hotel id 30073328 and p.able sale date between to date 2009 03 27 yyyy mm dd and to ...

字串格式化函式引起的崩潰

我們常用的格式化字串函式有 hresult stringcchvprintf out lptstr pszdest,in size t cchdest,in lpctstr pszformat,in va list arglist int printf const char format,對於如下的...

字串,字串陣列,字串指標!!

字串 字元陣列實際上是一系列字元的集合,也就是 字串 string 字串陣列 在c語言中,沒有專門的字串變數,沒有string型別,通常就用乙個字元陣列來存放乙個字串。c語言規定,可以將字串直接賦值給字元陣列 在c語言中,字串總是以 0 作為串的結束符。上面的兩個字串,編譯器已經在末尾自動新增了 0...