int *c
存儲地址的整數變量,但不是整數值。這就是爲什麼你會得到一個錯誤/警告。
char *c={'q','w'}
在c中是一個無效的初始化。因爲指針可以指向一塊分配的內存。但是這種方式沒有爲{'q','w'}
本身分配內存。
如果你願意,你可以使用
`char *c=(char[]){'q','w'}`
因爲,在這樣沒有無效初始化因爲{'q','w'}
型轉化爲char[]
可以通過c
指出完成。
同意與你的字符* C的答案,但通過指定的char * C = 「周杰倫」 這裏也是我定義的數組爲c = { 'J', 'A', 'Y',」 \ 0' }有啥這兩個之間除外的 根本區別‘\ 0’
因爲,中{'w','q'}
類型下不了決心char[]
,當您使用char *p={'q','w'};
。但是當您使用char *p="hello"
時,的類型解析爲char array
。這就是C language
如何定義string literals
他們是字符流,但不是int
或任何其他的流。
編譯時,每個這樣的字符串文字都存儲在靜態存儲位置,並且完全是char array
,因此可以用c
指向,它的類型爲char *
。但是這與{}
語法不同。因爲{'q','w'}可以是一個整數數組,也可以先將其轉換爲char [],那麼它如何被賦值爲char *
?例如,int p[]={'1','2'}
編譯得很好。由於指針運算受其受type
s size
影響的類型的影響。{'1','2'}
需要2*sizeof(int)
如果它是int
數組,並且2*sizeof(char)
如果它是char
數組。
你應該給出你得到的警告。 –