C++将新数组传递给函数的指针

Jul*_*les 0 c++ arrays pointers function

编辑:如果我试图在没有全局或静态且没有矢量o动态向量的情况下做什么呢?

我正在尝试创建两个向量并且具有一个函数,该函数通过地址传递一个新向量,该向量是两个数组中每个元素的商.即V1为1 1 2 2 3 4 V2为2 2 1 1 2 2,预期结果为2 2 2 2 6 8

我的问题是当我从"quoziente"函数发送"r"结果时因为我收到随机数.我认为问题在于该函数仅在执行期间存在,但是当它停止运行时,它也会随着变量而消失.我应该怎么做?我确信我将正确的地址传递给"ris".我甚至尝试打印出操作的元素,我确信我正在做正确的操作.任何帮助真的很感激!谢谢

这是代码:

  1 #include <iostream>
  2 using namespace std;
  3
  4
  5
  6 void readarray (int* v, int dim) { 
  7     for(int i=0; i<dim; i++) { 
  8         cin >> v[i];
  9     } 
 10 }
 11 
 12 void printarray(int* v, int dim) { 
 13     for(int i=0; i<dim; i++) { 
 14         cout << v[i] << " ";
 15     } 
 16     cout << endl;
 17 }
 18 
 19 int main() { 
 20     int v1[7];
 21     int v2[7];
 22     int *ris;
 23       
 24     cout << "V1";
 25     readarray(v1,7);
 26     cout << "V2";
 27     readarray(v2,7);
 28     ris = quoziente(v1,v2,7);
 29     cout << "V1";
 30     printarray(v1,7);
 31     cout << "V2";
 32     printarray(v2,7);
 33     cout << "ris ";
 34     printarray(ris,7);
 35     
 36     return 0;
 37 } 
 38 
 39 int* quoziente (int* v1, int* v2, int dim) { 
 40     int r[7]; 
 41 
 42     for(int i=0; i<dim; i++) { 
 43        r[i] = v1[i] * v2[i];
 44        cout << r[i] << " ";
 45     }
 46     cout << endl;
 47     return r;
 48 }
Run Code Online (Sandbox Code Playgroud)

The*_*ees 5

如果您使用std :: vector或其他类似的容器,这将更容易管理.

std::vector<int> quotient (std::vector<int> left, std::vector<int> right)
{ 
     std::vector<int> result;

     auto left_iterator = left.begin();
     auto left_end =  left.end();
     auto right_iterator = right.begin();
     auto right_end =  right.end();

     for(; left_iterator != left_end && right_iterator != right_end; 
         left_iterator++, right_iterator++) 
     { 
        int quotient = (*left_iterator) * (*right_iterator);
        result.push_back(quotient);
        std::cout << quotient << " ";
     }
     std::cout << std::endl;

     return result;
}
Run Code Online (Sandbox Code Playgroud)

当然,正如所提到的,还有std :: algorithm实用程序也更适合这一点,例如std::transform- 请参阅P0W的答案.但是,我猜这是为了你自己的学习,所以看看std库容器在一般工作中也很重要.