C語言字串問題

2022-09-08 13:50:07 字數 925 閱讀 1018

1樓:go浪人生

本質原因是:陣列名是個常量,不可以賦值。

所以char s[10]; s="world"; 是不合法的,因為你在給乙個常量賦值。

而char s[10]=實際上是給s的元素賦值。即:計算機先分配乙個空間,把空間的位址初始化給s,此時s已經是個字元指標常量了,以後不能給他賦值了。

接著=實際上是給s這個陣列裡的元素賦值。

實際上char s[10]=; 等價於(當然唯一的區別是用malloc分配的空間在堆裡):

char *const s=(char *)malloc(10);

strcpy(s,"world");

所以,如果你再寫 s="abcd";的話肯定是錯了

2樓:

char s[10];//這個等號操本來是沒有的s="world";,要用 strcpy(s,"world");這樣賦值

char s[10]=;這個是初始化

3樓:匿名使用者

這個肯定不一樣啦,那個s是代表乙個陣列的開始位置,也就是s指向"world",而char s[10]=;這個world是乙個字串了,字元陣列中怎麼能存字串呢?好好去看一下指標

4樓:匿名使用者

錯誤 1 error c2440: 「=」: 無法從「const char [6]」轉換為「char [10]」 c:

\users\dx999\documents\visual studio 2008\projects\test\test\test.cpp 18 test

這和記憶體分配機制有關,字串常量應該在堆裡面,和一般的變數不在一起

5樓:匿名使用者

因為s="world";中s是指標,它指向的是s[0]上的字元,所以把"world"賦值給s

c語言字串陣列逆序問題,C語言字串陣列逆序問題

第乙個問題 字串陣列的長度不包括最後的 0 第二處問題 1 把 for i 0 str1 i 0 i 後面加上乙個分號 2 把for i 0 str1 i 0 i 後面的花括號去掉 3 再把 puts str1 前面的花括號去掉就可以了 程式如下 include stdio.h int main c...

c語言,關於字串

mark 這個分析了下還挺複雜 想想先 這樣子話幾乎是沒有辦法實現的。因為哪一些字元屬於子串是不確定的,big可能是乙個子串,igb可能是乙個子串,gba可能是乙個子串。不過當你確定你需要查的子串時,可以進行判定的。比如查詢這個字串裡有多少個 big 我這裡提供乙個思路參考。這是乙個字串 strin...

C語言字串陣列

不是的,printf裡 s是通過後面的name定址到該記憶體單元,然後從該記憶體單元開始讀取資料,知道 0 字元結束。所以會把你輸入的東西輸出 是的,但是 s的含義是,把從這個位址開始的內容當作ascii碼依次輸出來,直到碰到 0 就是一種機械的做法 比如 int a printf s a 會輸出a...