为什么int *数组不能直接初始化但char *数组可以?

时间:2014-09-13 09:51:14

标签: c++ arrays pointers

为什么无法直接初始化int*数组,但char*数组可以? 我知道它们不一样,但导致这种情况发生的确切差异是什么(请解释原因)?

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

例如:

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

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

提供错误:无效转化

我不知道要搜索什么来查找相关问题所以我不知道是否存在相同的问题

2 个答案:

答案 0 :(得分:5)

后一个表达式是一个指针数组。该错误表示您正在将int转换为int *。

表达式应为

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

答案 1 :(得分:4)

您为p提供的条目不是int*条目,而是int条目,因此类型不正确(int不是{ {1}})。您为int*条目提供的string literalsname(其中const char [x]是文字*的长度),可以隐式转换为x },所以类型是可以接受的,并且有效。

由于您的char*是一个p数组,因此这些条目必须为int*或可隐式转换为该条目,就像int* name数组的条目一样1}}可隐式转换为char*


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