动态数组存储值

时间:2019-03-27 19:41:45

标签: c++

我使用函数调整了数组的大小,但是似乎它不存储我输入的任何数组值。

基本上,我将-1放到该位置,循环停止,然后显示数组中的元素。却什么也没显示。

cout之后,输出不显示任何内容。

#include <iostream>
using namespace std;

void resize(int *&arr, int &size){
    int tempsize=size;
    size=size+10;
    int *temp= new int [size];
    for(int i=0; i<tempsize;i++){
        temp[i]=arr[i];
    }
    delete [] arr;
    arr=temp;    
}

int main()
{
    int size=0;
    int capacity =10;
    int *p=new int[capacity];
    int check=0;
    int input;

    cout<<"Please enter the number in array and input -1 to end it.";

    while(check!=-1)
    {
        cin>>input;
        if(input==-1)
            {check=-1;}
        else{
        if(size==capacity){
            resize(p,capacity);
            p[size]=input;
            size++;
        }
        }

    }

    cout<<"Show me the numbers in array: ";

    for(int i=0; i<size;i++){
        cout<<p[i]<<" ";
    }
    cout<<endl;

    delete [] p;


  return 0;
}

1 个答案:

答案 0 :(得分:0)

您的if语句是否需要调整数组大小太过复杂。 {}应该只包含调整大小,然后在{}之外应该存储到数组中。

相反,大小为0,即!=容量,因此您什么也不做。