指针好题(考试前可复习)

发布时间 2023-11-30 00:05:15作者: 最爱丁珰

struct Array{
    int* p;
    int size;
    int capacity;
};
Array *create_array(int value){
    Array *array=new Array;//定义一个新指针时,一定要记得初始化
    //要么用已经定义了的变量的地址,要么new一个
    array->size=array->capacity=1;
    array->p=new int[array->capacity];
    array->p[0]=value;//注意这种写法,结构体指针的内容套了一个指针并且指向动态数组
    return array;
}
void push_back(Array* arr, int value){
    if(arr->size==arr->capacity) 
    {
        arr->capacity<<=1;
        int *temp=new int[arr->capacity];
        for(int i=1;i<=arr->size;i++) temp[i-1]=arr->p[i-1];
        delete []arr->p;//注意这种写法,对一个结构体里面的动态数组进行撤销
        arr->p=temp;
    }
    arr->p[arr->size++]=value;
}
void pop(Array *arr){
    arr->size--;
}
int get_size(Array *arr){
    return arr->size;
}
int get_capacity(Array *arr){
    return arr->capacity;
}