C語言字串陣列問題

2022-11-14 22:42:23 字數 868 閱讀 4852

1樓:前塵亂夢

c語言中,賦值 與 賦初值(又叫初始化), 是不一樣的。

在定義變數的同時賦值,叫賦初值, 而定義後賦值就是普通的賦值了。

你說的 「不能用賦值語句將一字串常量或字元陣列直接賦值給一個字元陣列

」 這句話是說普通賦值的情況, 也就是, 不能定義一個字元陣列以後,再給他直接賦值。

而 char s="12345";這個語句,是賦初值。 這是允許的。 如果你要問為什麼,那隻能說c語言的語法就是這麼規定的。

當你要給一個已經定義的字元陣列賦值,一般用strcpy(),memcpy()等函式,或者你自己一個一個元素的賦值。 像char a[10]; a="sss"; 或者a="ssss";這樣的都是普通賦值,是不允許的。

2樓:匿名使用者

char str[10]指的是陣列中從0開始算起的第9個元素.是具體的了.是特指的了.這種形式可以在使用陣列元素過程中書寫.

所以,char str[10]= 賦值肯定是錯的. char str[10]='5'就可以.

char s="12345" 中並沒有"人為"指定陣列的大小,靠編譯器去計算賦值元素"12345"來計算得出陣列的大小.所以可以,因為編譯器支援.

str=可以,的確是因為str中沒有10,所以是一個陣列,如果有10,就是引用一從0算起的第9位了.

3樓:匿名使用者

就是字元陣列要麼定義時候賦值,要麼使用strcpy或者memcpy賦值,這是因為字串(陣列)不能整體賦值操作,除過想c++ string類一樣,自己定義賦值操作,char s="12345"這個例子是定義時候直接初始化的,char str[10];str=; 沒有這樣的寫法,編譯錯誤,原因就是陣列不能整體賦值

c為字串陣列動態賦值的問題,C 為字串陣列動態賦值的問題

改用list吧.方法一是沒有new 沒有分配空間 方法二是在new的時候沒有指定大小,預設是0個元素,所以對其任意一個元素賦值都是越界.在c 中,陣列一般用來存放大小確定的資料.如果陣列大小未知,建議使用list lista new list a.add we messagebox.show a 0...

跪求c語言字串處理函式,跪求 c語言字串 7個處理函式

1.字串連線函式 strcat 原型 char strcat char str1,const char str2 2.字串查詢函式 strchr 原型 char strchr const char str1,const char str2 3.字串比較函式 strcmp 原型 int strcmp ...

c語言問題將字串a複製到字串b中

1 首先需要建立一個新的檔案,輸入標頭檔案和主函式。2 接下來需要定義變數型別。3 設定完變數型別之後開始呼叫cpy函式。4 接下來需要定義一個函式,並定義變數型別。5 最後加一個字串結束符,並在主函式中輸出。6 編譯。執行,可以看到字串a複製到字串b中。將字串a複製到字串b中,簡單的方法是使用st...