将两个指针返回到动态数组

路易斯·瓦尔德兹

我这里有很多关于指针和动态数组的问题。我有一个函数,它可以完成很多工作,例如从动态数组中删除一个元素,这导致我需要将内存重新分配给这些动态数组之一。问题是我在函数内调用了函数,而我无法将所有值正确地返回给Main。由于我不能返回2个值,我该怎么做?

structure1* register(structure1 *registerArray,structure2 *waitingList, int counter){
    //Bunch of code in here
    registerArray = realloc(inspecao, (counter)+1);
    waitingList = eliminate(waitingList, 5, counter); //Doesn't matter what it does really

    return registerArray;
}


structure1* eliminate(structure1 *arrayToEliminateFrom, int positionToEliminate, int *counter){

    //The code for this doesn't matter
    //All I do is eliminate an ellement and reallocate it
    arrayToEliminateFrom = realloc(arrayToEliminateFrom, (*counter-1)*sizeof(structure1))
    return arrayToEliminateFrom;
}

如您所见,我不知道如何将指向waitingList动态数组的指针返回给Main。我怎样才能做到这一点?我到处搜寻。帮助

克雷格·埃斯蒂

好的,这有两种方法。

首先是根据您的评论,您认为老师会想要什么:

void
xregister(structure1 **registerArray, int *arrayCount,
    structure1 **waitingList, int *waitCount)
{

    // Bunch of code in here

    *arrayCount += 1;
    *registerArray = realloc(inspecao, *arrayCount * sizeof(structure1));

    // Doesn't matter what it does really
    eliminate(waitingList, 5, waitCount)
}

void
eliminate(structure1 **arrayToEliminateFrom, int positionToEliminate,
int *count)
{

    // The code for this doesn't matter

    *count -= 1;

    // All I do is eliminate an ellement and reallocate it
    *arrayToEliminateFrom = realloc(*arrayToEliminateFrom,
        *count * sizeof(structure1))
}

这就是罗伯托和我的建议。实际上,我的是一种通用的可变长度数组方法,可以通过一些轻微的字段更改将其完全推广。在某种程度上,由于您已经在使用结构,所以我看不出您的老师为什么会反对这种结构,因为这是一种标准的做法。减少麻烦和清洁。

struct vector {
    int vec_count;
    structure1 *vec_base;
};

void
xregister(vector *registerArray,vector *waitingList)
{

    // Bunch of code in here

    registerArray->vec_count += 1;
    registerArray->vec_base = realloc(registerArray->vec_base,
        registerArray->vec_count * sizeof(structure1));

    // Doesn't matter what it does really
    eliminate(waitingList, 5)
}

void
eliminate(vector *arrayToEliminateFrom, int positionToEliminate)
{

    // The code for this doesn't matter

    arrayToEliminateFrom->vec_count -= 1;

    // All I do is eliminate an ellement and reallocate it
    arrayToEliminateFrom->vec_base = realloc(arrayToEliminateFrom->vec_base,
        arrayToEliminateFrom->vec_count * sizeof(structure1))
}

这是一种更紧凑的方法:

struct vector {
    int vec_count;
    structure1 *vec_base;
};

void
vecgrow(vector *vec,int inc)
{

    vec->vec_count += inc;
    vec->vec_base = realloc(vec->vec_base,vec->vec_count * sizeof(structure1));
}

void
xregister(vector *registerArray,vector *waitingList)
{

    // Bunch of code in here

    vecgrow(registerArray,1);

    // Doesn't matter what it does really
    eliminate(waitingList, 5)
}

void
eliminate(vector *arrayToEliminateFrom, int positionToEliminate)
{

    // The code for this doesn't matter

    vecgrow(arrayToEliminateFrom,-1);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

返回数组的两个指针

来自分类Dev

将两个动态键分配给数组

来自分类Dev

Django:将结果从两个mysql表返回到JSON

来自分类Dev

将两个变量从php传递到ajax,然后返回到php

来自分类Dev

两个类如何正确地将值从 A 类返回到 B

来自分类Dev

Excel:将最接近匹配的行号返回到两个值

来自分类Dev

将数组地址从函数返回到指针(C ++)

来自分类Dev

将2D Cython指针返回到Python数组

来自分类Dev

将数组地址从函数返回到指针(C ++)

来自分类Dev

如何将两个记录计数从Execute SQL任务返回到SSIS包中的User变量

来自分类Dev

如何使用razor和C#将两个ListBoxes中的选定值返回到MVC控制器

来自分类Dev

使用指针引用将数组中的两个float元素相乘

来自分类Dev

制作动态数组并在C ++中返回两个值

来自分类Dev

使用jQuery“ extend”连接两个数组将返回一个数组

来自分类Dev

如何返回将两个函数与两个参数组合在一起的函数

来自分类Dev

对mmap()返回感到困惑-两个不同的指针?

来自分类Dev

将指针从库返回到应用

来自分类Dev

使用数组访问两个结构上的指针

来自分类Dev

使用指针将两个4向量与sse相加

来自分类Dev

动态PIVOT,从两个表的JOIN返回结果

来自分类Dev

一个变量返回两个单独的数组

来自分类Dev

C语言如何将指针从函数返回到指针

来自分类Dev

AngularJS从数组中计算两个动态值

来自分类Dev

如何动态渲染/加载两个值的数组?

来自分类Dev

比较两个指针

来自分类Dev

将动态分配的数组从 C++ dll 返回到 VBA

来自分类Dev

交换两个指针到指针

来自分类Dev

将函数的静态数组返回到main()函数中的另一个数组

来自分类Dev

比较两个哈希数组并返回新对象

Related 相关文章

热门标签

归档