为什么在rvalues之间指向char数组的指针是&“hello”和char数组?

时间:2017-05-20 14:19:22

标签: c arrays string pointers

为什么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]

1 个答案:

答案 0 :(得分:2)

*x = temp2不起作用,因为数组不可分配。如果您想要可分配的数组,则应使用::std::array代替。

char (*y)[6] = &"hello";不起作用,因为在C ++中,字符串文字是const char的数组。

您声明https://go.microgreensfarmer.com/video1,因此x[0]*x(同一事物)表示对6个字符数组的引用。