編輯C數組我是一個小白到Ç編程(我來自的土地JS和PHP),作爲一個學習的過程,我試圖寫一個程序,要求提供用戶的姓名,然後將其打印出來,除了將第一個字母更改爲z
。然而,當我去編譯代碼,它返回以下error
消息中提到的行name[0] = "Z";
無法通過索引
警告:賦值時將指針整數,未作鑄
是否有一個原因,我可以」 t將值分配給char
array
中的特定索引?
(注:我曾嘗試類型轉換"Z"
爲char,但它只是扔error
警告:投從指針不同size`的整數)
編輯C數組我是一個小白到Ç編程(我來自的土地JS和PHP),作爲一個學習的過程,我試圖寫一個程序,要求提供用戶的姓名,然後將其打印出來,除了將第一個字母更改爲z
。然而,當我去編譯代碼,它返回以下error
消息中提到的行name[0] = "Z";
無法通過索引
警告:賦值時將指針整數,未作鑄
是否有一個原因,我可以」 t將值分配給char
array
中的特定索引?
(注:我曾嘗試類型轉換"Z"
爲char,但它只是扔error
警告:投從指針不同size`的整數)
不像某些語言做不區分字符串和字符,C需要不同的字符語法(與單字符字符串相比)。
你需要使用單引號:
name[0] = 'Z';
的錯誤是很神祕的,雖然。它試圖說"Z"
,一個單字符C字符串,被分配到name[0]
,一個整數類型char
。 C字符串是數組;數組可轉換爲指針。因此,C將它視爲一個指向int的指針而不需要強制轉換。
非常感謝。 JS和PHP沒有這樣的東西,所以我不知道。 –
替換name[0] = "Z";
與name[0] = 'Z';
。
'single-quatation'用於字符element
,「double-quatation」用於字符串賦值。
在C中,單引號和雙引號帶有不同的含義。事實上,在C中沒有「字符串」的概念。您有基本的char數據類型,其中char由單引號表示。爲了表示字符串,可以將它們存儲爲一個字符數組。例如,
char text[] = {'h', 'e', 'l', 'l', 'o'};
這僅僅是一個寫作的比較繁瑣的方式
char text[] = "hello";
這是完全一樣的第一個例子,不同之處在於有一個是空字符\0
末(這是C如何檢測「字符串」的結尾)。這與char text[] = {'h', 'e', 'l', 'l', 'o', '\0'};
的說法相同,除非現在您可以更輕鬆地處理陣列,如果您想對其進行基於字符串的處理。
來到你的問題,如果你想索引的「串」某個字符,你需要通過它的指數在數組中訪問它。
因此,text[0]
返回字符h
,這是char
類型。要指定不同的值,您必須指定一個單引號字符,如下所示:
text[0] = 'Z';
單引號不是雙引號 –