问题描述
我正在学习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);