修改函数中二维引用数组的值
Modifying the values of a 2d array of reference in a function
这个程序必须有一个可以接受两个数组并在第三个数组中返回它们的乘积的函数。所有数组都必须是2d,并且必须有一个单独的函数完成元素的成员乘法。当我在visual studio中运行这个时,我得到了错误:
Unhandled exception at 0x003f15ec in program4.exe: 0xC0000005:
Access violation reading location 0x00000000.
这可能是由于我对c++缺乏了解,但我想我可能犯了语法错误或其他什么。程序如下:
#include<iostream>
using namespace std;
void ProductArrays(int[3][4], int[3][4], int** array3[3][4]);
void main()
{
int array1[3][4] = { {1,3,5,7}, {9,11,13,15}, {17,19,21,23} };
int array2[3][4] = { {2,4,6,8}, {10,12,14,16}, {18,20,22,24} };
int** array3[3][4] = {0,0,0,0,0,0,0,0,0,0,0,0};
ProductArrays(array1, array2, array3);
system("pause");
return;
}
void ProductArrays(int array1[3][4], int array2[3][4], int** array3[3][4])
{
int i,j;
for (i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
**array3[i][j] = array1[i][j] * array2[i][j];
}
}
return;
}
我认为你的意思是array3
是对二维指针数组的引用,但它实际上是int**
的二维数组。当你做乘法运算时,这部分:
**array3[i][j]
试图解引用array3[i][j]
中的内容,这是0,因此AccessViolation。我想你的意思可能是:
void ProductArrays(int array1[3][4], int array2[3][4], int (&array3)[3][4])
(1)
如您所要求的,array3的声明是错误的。
int** array3[3][4] = {0,0,0,0,0,0,0,0,0,0,0,0};
你需要这个如果我正确理解你的问题:
int array3[3][4] = {0,0,0,0,0,0,0,0,0,0,0,0};
(3)
您正在获得错误,因为您正在创建指向NULL (0
)的指针的2D数组,并且您正在分配给0
位置。
**array3[i][j] = array1[i][j] * array2[i][j];
^ assign to `0` location
(2)
像这样声明函数:
void ProductArrays(int array1[3][4], int array2[3][4], int (*array3)[4])
{ // ^ notice
int i,j;
for (i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
array3[i][j] = array1[i][j] * array2[i][j];
// ^ remove **
}
}
return;
}
从main中调用,如:
ProductArrays(array1, array2, array3);
另外一点,我的回答是通过地址传递的,@Barry的回答是通过引用传递的。在c++中,这两种方法都是允许的。(在C中只能通过地址传递)
通过引用传递具有指针的功能,但像值变量一样简单使用,所以@Barry的答案更好。考虑一下我的回答来理解观点。
相关文章:
- 将二维矢量传递给类
- 将值从二维数组输出到文本文件
- 我在二维向量中是否正确分配了内存
- 带结构的二维矢量:如何存储元素
- 在二维数组中查找最小值和最大值?
- 移动二维数组中的字符
- C++ 传递二维字符数组
- 为什么我需要三个嵌套的大括号来调用赋值运算符,将const引用到二维数组
- 如何通过引用或指针访问二维矢量
- 在C++中通过引用传递字符串的二维动态数组
- C++ 二维数组和指针引用
- 如何使用逐引用传递二维矢量
- 运算符 [] 重载常量引用二维指针
- 如何使用一个动态创建的一维数组的二维数组引用仅与标准库?
- 如何在二维数组中引用对象
- 如何在c++中发送一个二维数组作为引用,并返回
- 在函数搜索模式中引用二维数组时出错
- 修改函数中二维引用数组的值
- c++中二维数组中引用传递的问题
- 返回对动态生成的二维数组的引用