从 C++ 中的函数返回数组地址问题
returning an array address from function in c++ issue
我是编程新手,这段代码在行 => int *result = apply_all(array1,5,array2,3( 中给了我语法错误 这是错误:在"}"标记|
我正在尝试编写名为 apply_all 的函数,该函数需要 2 个整数数组及其大小,并动态分配一个新的整数数组,其大小是 2 个数组大小的乘积。 该函数应遍历第二个数组,并在数组 1 的每个元素上多个每个元素,并将乘积存储在新创建的数组中。该函数返回指向新分配的数组的指针。 我还编写了一个函数,该函数是print以显示1st,2nd和new数组。
#include <iostream>
using namespace std;
//function prototype
int *apply_all(int *array1 ,int size1,int *array2,int size2);
void print(int *array,int size);
int main()
{
int array1[] {1,2,3,4,5};
int array2[] {10,20,30};
cout << "Array 1:";
print(array1,5);
cout << "Array 2:";
print(array2,3);
int *result = apply_all(array1,5,array2,3);
cout << "Result : ";
print(result,15);
delete [] result;
return 0;
}
int *apply_all(int *array1 ,int size1,int *array2,int size2)
{
int *result {nullptr};
result = new int[size1 * size2];
for (int i{0};i<size2;i++)
for(int j{0};j<size1;j++)
*(result[i*5+j]) = *(array1[i])**(array2[j]);
return result;
}
void print(int *array,int size)
{
for(auto num:array)
cout << num << endl;
}
在这一行:
*(result[i*5+j]) = *(array1[i])**(array2[j]);
由于result[i*5+j]
给你一个int
,你试图取消引用一个int
,这是不可能的。
您只需要执行以下操作:
result[i*5+j] = array1[i] * array2[j];
此外,在print
中,您的 range-for 循环不适用于指针。您需要做:
for(int i = 0; i < size; ++i)
cout << array[i] << endl;
此外,在apply_all
中,您的循环边界不正确。i
需要去size1
,j
需要去size2
。
这是一个演示。
由于您是新手,一个简单的解决方法是创建一个带有缓冲区空间的数组来存储您的结果,并将指针传递给apply_all。然后,您可以写入此数组(在 main 中声明(应该非常易于访问并导致很少的错误,并使用 c 字符串(如 end (知道结果何时结束并停止从数组打印(c 字符串以值 0 结尾,以便程序不会读取不相关的内存(。例如:
int buf[99];
apply_all(array_1, size1, array_2, size2, buf, size3);
for (int x = 0; buf[x] != end of buf var; x++;)
{
print(buf[x])
}
和
apply_all()
{
buf[start-end] = whatever you want;
buf[end + 1] = some variable that won't appear in buffer; //max int size?
}
相关文章:
- 将数组的地址分配给变量并删除
- 创建一个函数来转换数组元素的类型并返回数组的地址
- 在分配指向数组内存地址的指针时,为什么不必使用地址运算符?
- C++指针分配字符数组的地址
- 数组的变量名和该数组的地址有什么区别?
- 数组基础地址指针
- 我们可以在整数类型的双指针中分配2D整数数组的地址吗?怎么可能
- 数组与其地址之间的关系是什么?
- 如何将数组的地址分配给指针
- 如何反转字符指针数组的地址
- [错误]获取C++中临时数组的地址
- 如何阻止我的数组打印地址
- C++数组输出地址
- 数组内存地址总是按最小到最大的顺序排列吗
- 使用数组外部地址的数组运算符
- 使用数组的地址获取过期指针
- 为什么我不必给函数提供数组的地址
- 一个简单的向量,如何正确重新分配新数组的地址
- 如何将数组的地址放入变量中
- 比较 C++11 中数组的地址