为什么 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'
、' '
。)