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

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

本文关键字:数组 char int 不能 为什么 初始化      更新时间:2023-10-16

为什么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*,因此类型是可接受的,并且有效。

由于pint*的数组,因此条目必须是int*或可隐式向其传递,就像char*name数组的条目可隐式传递给char*一样。


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