如何解决为什么我的程序显示此编译错误?
我正在学习c ++,并且刚接触到指针,在阅读了有关我的内容之后,我便开始对其进行练习 我被困在多维数组和指针上。我被困的问题是我的程序没有打印第二个数组元素,这也给了我尝试找到解决方案但我找不到共享图片的一些错误程序,您可以看一下它的链接,在下面
谢谢
解决方法
这是您的代码
#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);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。