为啥我的程序显示此编译错误?
Posted
技术标签:
【中文标题】为啥我的程序显示此编译错误?【英文标题】:why my program is showing this compilation error?为什么我的程序显示此编译错误? 【发布时间】:2020-08-21 10:03:29 【问题描述】:我正在学习 c++ 并且刚刚达到指针,并且在阅读了关于我开始练习它之后 我被困在多维数组和指针上。我被困的问题是我的程序没有打印第二个数组元素它也给出了一些错误我试图找到解决方案但找不到我的共享图片程序你可以看看它的链接如下
enter image description here
谢谢
【问题讨论】:
ptrarr
是指向 int
的指针,*ptrarr
是 int
和 **ptrarr
没有意义,为什么要取消引用两次?
我访问了很多网站,它向我展示了同样的东西。请告诉如何解决它
请编辑您的问题,删除您的代码图像并将您的代码作为文本粘贴到您的问题中。
等我也照做
【参考方案1】:
这是你的代码
#include <iostream>
using namespace std;
int main()
int arr[2][3];
arr[0][0]=1;
arr[0][1]=8;
arr[0][2] = 4;
arr[1][0]=3;
arr[1][1] = 6;
arr[1][2] = 54;
int* ptrarr=&arr[0][0];
cout<<*(*(ptrarr+1)+1);
return 0;
实际上,您所做的是将ptrarr
分配给arr[0][0]
的地址。在cout
语句中,ptrarr
将地址递增到arr[0][1]
,然后引用它(输出该地址的值),即8 (arr[0][1]=8)
,然后,您再次取消引用它,这意味着没有任何意义,因为您有一个值现在而不是地址。
这可以解决你的错误
#include <iostream>
using namespace std;
int main()
int arr[2][3];
arr[0][0]=1;
arr[0][1]=8;
arr[0][2] = 4;
arr[1][0]=3;
arr[1][1] = 6;
arr[1][2] = 54;
int* ptrarr=&arr[0][0];
cout<<*(ptrarr+ (rowNumber*COL) + colNumber));
return 0;
其中rownumber
和colnumber
是您要访问的位置,COL
是总列数。在您的情况下,它是3
。
所以如果你想输出arr[1][2]
,你会这样做
cout<<*(ptr+(1*3)+2);
【讨论】:
先生,但我想要第二个数组的值 您实际期望的输出是什么? 我期望的输出是 54 我现在已经编辑了答案。它现在可以工作了。获取输出为54
,cout<<*(ptrarr+(1*3)+2)
,因为它位于 arr[1][2]
你能解释一下这是什么意思吗?它会有所帮助以上是关于为啥我的程序显示此编译错误?的主要内容,如果未能解决你的问题,请参考以下文章
为啥在尝试调用采用动态参数的基本构造函数/方法时会出现此编译错误?
为啥我的visual stdio 2010连错误程序也能编译成功。。。。