char ch[]]和char*ch[]都是相同的吗 我从网站上看到*C[]是实际的二维数组或字符,但是当我自己在C++中写2D数组的结果是不同的。谁能描述一下为什么会这样

char ch[]]和char*ch[]都是相同的吗 我从网站上看到*C[]是实际的二维数组或字符,但是当我自己在C++中写2D数组的结果是不同的。谁能描述一下为什么会这样,c++,arrays,char,C++,Arrays,Char,这是我的密码: #包括 使用名称空间std; int main() { charch[3][2]={{'1','2'},{'3','4'},{'5','6'}; cout它们不是一回事。char[]将衰减为char*,因此对于cout 是char ch[][]和char*ch[]都是相同的 不,它们不一样 char ch[][]是一个长度不确定的数组或长度不确定的数组。由于数组元素可能不是长度不确定的数组,因此此类数组的格式不正确 char*ch[]是指针长度不确定的数组 另一方面,这在C++

这是我的密码:

#包括
使用名称空间std;
int main()
{
charch[3][2]={{'1','2'},{'3','4'},{'5','6'};

cout它们不是一回事。
char[]
将衰减为
char*
,因此对于
cout
是
char ch[][]
char*ch[]
都是相同的

不,它们不一样

char ch[][]
是一个长度不确定的数组或长度不确定的数组。由于数组元素可能不是长度不确定的数组,因此此类数组的格式不正确

char*ch[]
是指针长度不确定的数组



另一方面,这在C++11及更高版本中是格式不正确的,因为您正在使用常量数组(字符串文字)初始化指向非常量的指针。要解决此问题,请使用指针数组来改为conts char。

您从哪里读到的?
char*char[3]
也是指针数组。请注意,您的第二个数组(
cha[3]
)是一个指向字符串文本的指针数组,每个指针由三个字符组成(两个数字加上
nul
-终止符)。如果将第一个数组设置为:
char ch[3][3]={{{'1','2',0},{'3','4',0},{'5','6',0};
(注意,在零周围没有引号),则会看到类似的输出。
123456
12
char ch[3][2] = {{'1','2'},{'3','4'},{'5','6'}};
cout<<ch[0]<<endl;
char *cha[3] = {"12","34","56"};