将指针传递给API函数

passing pointer to an API function

本文关键字:API 函数 指针      更新时间:2023-10-16

我具有通过向量的地址的API函数:

function_A()
{            
  function_B();
}
function_B()
{
   vector<int> tempVector;
    function(&tempVector[0]); // <---- API function: fills the vector with values
   ...
}

tempVector的创建在function_B中,效果很好。

我希望tempVector的创建将在function_A中并传递给它,因此程序中的其他功能也将使用tempVector中的数据。

我试图以几种方式将指针传递给tempVectorfunction(...),但我总是会遇到错误。

function_A()
{         
  vector<int> tempVector;  // <--- creation here   
  function_B(&tempVector); // pass its address 
  //use tempVector
}
function_B(vector<int> * tempVector) // receive its address
{
    function(); // <---- API function: how should I pass tempVector?
   ...
}

为什么将其作为C指针传递,而不是C 参考?

function_A()
{         
  vector<int> tempVector;   
  function_B(tempVector);  
  //use tempVector
}
function_B(vector<int>& tempVector) 
{
    function(&tempVector[0]); 
   ...
}

您必须像往常一样删除指针:

function_B(vector<int> * tempVector) {
    function(&(*tempVector)[0]);
}

像指针一样传递:

function_B(vector<int> * tempVector) // receive its address
{
    function(tempVector);
    ...
}
function(vector<int> * tempVector)
{
    ...
}

或作为变量:

function_B(vector<int> * tempVector) // receive its address
{
    function(*tempVector);
    ...
}
function(vector<int> tempVector)
{
    ...
}