簡體   English   中英

為什么不能直接初始化int *數組而可以初始化char *數組?

[英]Why an int* array can't be initialized directly but char* array can be?

為什么不能直接初始化int*數組而可以初始化char*數組? 我知道它們並不相同,但是導致這種情況發生的確切區別是什么(請解釋原因)?

我知道為什么int* p[]無法直接初始化。
我不知道char* name[]怎么可能?

例如:

char* name[] = { "Mostafa Chamran", "Mehdi Zeinoddin", "Ebrahim Hemmat" };

int* p[3] = {1, 2, 3};

輸入錯誤: 轉換無效

我不知道要搜索什么才能找到相關的問題,所以我不知道是否存在相同的問題

后一個表達式是一個指針數組。 該錯誤表明您正在將int轉換為int *。

表達式應為

int arr[3]={1, 2, 3};

您為p給出的條目不是int*條目,它們是int條目,因此類型不正確( int不是int* )。 您為name條目提供的字符串文字const char [x] (其中x是文字*的長度),可以將其隱式轉換為char* ,因此類型可以接受並且可以使用。

由於您的p是一個int*數組,因此條目必須是int*或隱式可轉換為它,就像char* name數組的條目可隱式轉換為char*


(* "foo"const char[4] ,例如'f''o''o''\\0' 。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM