2014-09-13 55 views
0

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

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

例如:

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

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

給予錯誤:無效轉換

我不知道該怎麼搜索來查找相關的問題,所以我不要」 t知道同樣的問題是否存在

+0

因爲'「字符串文字這樣」'是一個'常量字符*'但數字常數是不'INT *單曲 – 2014-09-13 10:01:10

+0

Crowder它們是const char(no *) – user3783574 2014-09-13 10:23:21

+0

'const char []'與'const char *'相同。當你宣讀變量 – 2014-09-13 10:26:57

回答

4

您給p的條目不是int*條目,它們是int條目,所以類型不正確(int不是int*)。 string literals您給name條目的條目是const char [x](其中x是文字*的長度),可以隱式轉換爲char*,因此這些類型是可以接受的並且可行。

由於您pint*一個數組中,參賽作品必須是int*或隱式強制轉換它,就像你name陣列的char*條目被隱式強制轉換爲char*


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

5

後者表達是一個指針數組。該錯誤表明您正在將int轉換爲int *。

表達應根據T.J.是

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

我知道 但char *名字怎麼樣?爲什麼它可以容納文字嗎? 但int * p不能保存數字? 我的意思是爲什麼char *可以容納文字,但int *不能容納數字 它們不是像數字一樣嗎? – user3783574 2014-09-13 10:07:19

+2

@ user3783574:因爲[字符串文字的類型是「const char'的數組」](http://stackoverflow.com/a/15508173/157247),它可以隱式轉換爲'char *'。 – 2014-09-13 10:10:27