考慮下面的代碼:爲什麼「char * ptr = {'R','E','D',' 0'};」 「char * ptr =」RED「時給出太多警告;」工作正常?
#include<stdio.h>
int main()
{
char *ptr={'R','E','D','\0'};
//char *ptr="RED";
}
它顯示的警告名單如下:
warning: initialization makes pointer from integer without a cast|
warning: excess elements in scalar initializer|
warning: (near initialization for 'ptr')|
但是,如果工作正常,如果我註釋掉的第一條語句並激活第二語句(被註釋掉在我的代碼中)。
這是爲什麼?在第一種情況下,爲什麼不是指向同一個陣列的指針未指定爲ptr
,就像在第二種情況下一樣?這是什麼嚴格的技術原因?
大答案!!! – 2013-05-08 11:11:18
但** H2CO3 **表示字符串字符串「RED」的類型爲char [4],而不是char *,但** paxdiablo **表示它的類型爲char *'。對? – 2013-05-08 11:19:41
如果我是對的,你的回答在最後一行說,字符串文字確實是'char [4]'類型的,但是在賦給'ptr'之前它被轉換爲指針'char *'。 – 2013-05-08 11:21:18