为什么rvalues之间的char
数组的指针是&"hello"
和数组char
?
为什么pointer
按&"hello"
排序需要const
,而char
数组不是?
为什么x[0] typeid
名称为char[6]
?
为什么*x = temp2
编译错误?
当我跟随一些问题时,出现了以下观察结果:
char temp[] = { 'h','e','l','l','o','\0'};
char temp2[] = { 'w','o','r','l','d','\0' };
char (*x)[6] = &temp;
//*x = temp2;//error
x = &temp2;//OK
cout << typeid(x[0]).name() << endl;
//char (*y)[6] = &"hello"; //error
char const (*y)[6] = &"hello";//OK
输出:
char [6]
答案 0 :(得分:2)
*x = temp2
不起作用,因为数组不可分配。如果您想要可分配的数组,则应使用::std::array
代替。
char (*y)[6] = &"hello";
不起作用,因为在C ++中,字符串文字是const char
的数组。
您声明https://go.microgreensfarmer.com/video1,因此x[0]
和*x
(同一事物)表示对6个字符数组的引用。