筆者在編寫C時,使用以下語句時出錯:
char *string= 'aaabbbcc';
出錯原因是[Error] invalid conversion from 'int' to 'char*' [-fpermissive]
意思是從int
到 char *
是非法的轉換,這就意味着後面的字符串被程序認定爲int
型,實際上就是單引號和雙引號的使用區別造成了這個錯誤。
不同之處
1、含義不同
用單引號引起的一個字符實際上代表一個整數,整數值對應於該字符在編譯器採用的字符集中的序列值。而一般我們的編譯器採用的都是ASCII字符集。因此's'
的含義其實和十進制數115的含義是一致的。
而用雙引號引起的字符串,代表的是一個指向無名數組起始字符的指針。
2、大小不同
用單引號引起的一個字符大小就是一個字節。
而用雙引號引起的字符串大小是字符的總大小+1,因爲用雙引號引起的字符串會在字符串末尾添加一個二進制爲0的字符’\0’。
所以要將單引號修改爲雙引號纔可以編譯通過!