Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 带指针的字符串数组_C++_Pointers - Fatal编程技术网

C++ 带指针的字符串数组

C++ 带指针的字符串数组,c++,pointers,C++,Pointers,在以下代码中: int main() { char names[2][11] = {"Manchester","Party"}; char (*jk)[11]; jk = names; // LINE 1 char gaming[10] = {"Jetking"}; char (*po)[10]; po = &gaming; // LINE 2 cout<<"PO

在以下代码中:

int main()
{
   char names[2][11] = {"Manchester","Party"};
   char (*jk)[11];
   jk = names;                    // LINE 1
   char gaming[10] = {"Jetking"};
   char (*po)[10];
   po = &gaming;                  // LINE 2
   cout<<"PO is "<<*po;
intmain()
{
字符名[2][11]={“曼彻斯特”,“党”};
字符(*jk)[11];
jk=names;//第1行
字符游戏[10]={“Jetking”};
字符(*po)[10];
po=&gaming;//第2行

cout
char gaming[10]
是一个char数组。当您编写
po=gaming
时,游戏将转换为指向此任务char的指针。
po
是指向char数组的指针

因此,最后,编译器告诉您它无法将指向char的
指针转换为指向char数组的
指针。仅此而已。

在赋值中

jk = names;
类型为
char[2][11]
的数组
names
被转换为指向其第一个元素的指针,因此它会衰减为
char(*)[11]

游戏
,但是在大多数情况下会被转换成
字符*
,并且
字符*
po
的类型不兼容,
字符(*)[10]
,因此分配无效。如果您获取
游戏
的地址,您将获得所需的
字符(*)[10]

char (*po)[10];
是指向由10个
char
项组成的数组的指针


数组表达式不会衰减为作为数组指向自身的指针。它会衰减为(当它衰减时)指向第一项的指针。因此,需要应用地址运算符,以及您收到的关于无法将数组表达式转换为数组指针的错误消息。

,因为“char(*po)[10]可以解释为一个指向13个字符数组的指针。
看不到这两个链接。为什么是否决票?哈哈!如果我理解错了,你可以解释。我也不理解否决票,但如果你问或回答问题,你应该习惯。@LightnessRacesinOrbit:我说的只是对的。你可以参考任何艺术icle,即使是Olaf.char(*po)[10]发布的文件也引用了一个指向13个字符的数组。re“
游戏
是指向字符的指针”,不,它是一个数组。此外,编译器不会“告诉您它无法将指向字符的指针转换为指向字符数组的指针”.@cheers-sandhth.-Alf谢谢你指出这一点。我冒昧地解释了一下,当然,这更容易理解。:-)这正是我想知道的。你能进一步澄清一下我是如何得到char(*)的吗[10]当我获取地址时。这就是地址操作符的定义,如果您获取类型为
T
的对象的地址,它将返回一个
T*
。我不确定您需要在其中解释什么,您能澄清一下吗?刚刚意识到。很抱歉第二次澄清。这是我想要的答案。谢谢gre解释时