C ++,从函数返回数组

时间:2017-06-09 21:08:24

标签: c++ arrays function

我正在构建这个子网计算器,但现在我卡住了阵列。我想创建一个新的int函数,它将返回数组,但我不知道我是如何尝试很多东西但仍然没有想法,认为它必须用指针做一些事情。我想创建从“while(octet4> 0)”开始的新函数。所以octet4传入函数,函数应该返回完整的函数数组,我可以在main中使用它。希望有人会知道我正在寻找的答案,希望解决方案不会太复杂,因为我只是学习编程,并认为这将是一个有趣的项目。

int main() {
int i=0,j,q,s,size=8,temp;
int binary_ip[8];
int netmask;
int mask;
int octet1, octet2, octet3, octet4; 
string ip;
cout<<"Vnesite IP naslov, npr. 192.168.32.55:"<<endl;
cin>>ip;
cout<<"Vnesite netmasko, npr. /27:"<<endl;
cin>>netmask;   

stringstream stream(ip);
char ch; 
stream >> octet1 >> ch >> octet2 >> ch >> octet3 >> ch >> octet4;


while(octet4>0){
    binary_ip[i]=octet4%2;
    i++;
    octet4=octet4/2;
}

switch(i){
    case 7:binary_ip[7]=0;
    break;
    case 6:for(s=6;s<=7;s++)binary_ip[s]=0; 
    break;
    case 5:for(s=5;s<=7;s++)binary_ip[s]=0;
    break;
    case 4:for(s=4;s<=7;s++)binary_ip[s]=0;
    break;
    case 3:for(s=3;s<=7;s++)binary_ip[s]=0;
    break;
    case 2:for(s=2;s<=7;s++)binary_ip[s]=0;
    break;
    case 1:for(s=1;s<=7;s++)binary_ip[s]=0;
    break;
}

for(q=0;q<size/2;q++){
    temp=binary_ip[size-1-q];
    binary_ip[size-1-q]=binary_ip[q];
    binary_ip[q]=temp;}

return 0;
}

2 个答案:

答案 0 :(得分:1)

一些选项:

  • 使用std :: array而不是常规C数组。这些更容易使用,您已经在使用标准库。 http://www.learncpp.com/cpp-tutorial/6-15-an-introduction-to-stdarray/
  • 让你的函数填充数组,而不是创建并返回它:

    void MakeArray(int octet4,int binary_ip [8]);

  • 使用指针,使用“new”分配数组并使用“delete”释放它。但是,您需要一种方法来了解数组的大小。

答案 1 :(得分:0)

#include <iostream>


int array(int octet4, int binary_ip[]);

int main()
{
  int binary_ip[6];
  int octet4 = 55;
  int i = 0;
  i = array(octet4, binary_ip);//binary_ip passes in the address of the first element in the array
}
int array(int octet4, int binary_ip[])
{
    int i = 0;
    while(octet4>0)
    {
        binary_ip[i]=octet4%2;
        i++;
        octet4=octet4/2;
    }
    return i;
}

或者您可以使用Daniel H建议的载体

void array(int octet4, std::vector<int> &binary_ip)
{

    while(octet4>0)
    {
    binary_ip.push_back(octet4%2);
    octet4=octet4/2;
    }

}
int main()
{
  std::vector<int> binary_ip;
  int octet4 = 55;
  array(octet4, binary_ip); 
}