2014-09-13 52 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