首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用C++模拟各种结构的array_pop

用C++模拟各种结构的array_pop
EN

Stack Overflow用户
提问于 2013-10-07 22:31:42
回答 3查看 96关注 0票数 0

我是C语言的新手,但我目前正在做一个项目,我不知道如何才能做需要做的事情。

我有两个不同的结构数组,它们的定义完全不同,我正在尝试做与PHP的array_pop相同的操作,即删除数组结构的最后一个元素。

我知道我可以创建两个单独的函数,每个结构类型一个,但显然不是最好的主意,所以我想知道我是否可以将任何一个结构类型传递给一个函数,可能还有一个标志,而标志决定了它应该转换成什么类型的结构。

我的结构定义如下

代码语言:javascript
复制
typedef struct CallLogSearchResultStruct
{
    long date;
    int dRowIndex;
} callLogSearchResultStruct;

typedef struct CallLogSearchDataStruct
{
    char * date;
    char * time;
    char * bParty;
    char * aParty;
    float duration;
    char * cleardownCause;
    struct CallLogSearchOutboundStruct * outboundLegs;
} callLogSearchDataStruct;

下面是这些结构的初始化方式

代码语言:javascript
复制
callLogSearchData = calloc(numRows, sizeof(callLogSearchDataStruct));
callLogSearch = calloc(numRows, sizeof(callLogSearchResultStruct));

numRows是要包含在数组中的结构数。

下面是我如何使用这些结构

代码语言:javascript
复制
callLogSearchData[dataRow].aParty = NULL;
callLogSearchData[dataRow].bParty = NULL;
callLogSearchData[dataRow].cleardownCause = NULL;
callLogSearchData[dataRow].date = NULL;
callLogSearchData[dataRow].time = NULL;
callLogSearchData[dataRow].outboundLegs = NULL;

抱歉,如果这是一个简单直接的答案,我在谷歌上找不到任何东西,尽管不完全确定这将被称为什么,所以可能我使用了错误的关键字。

感谢您能提供的任何帮助。

EN

回答 3

Stack Overflow用户

发布于 2013-10-07 22:34:58

你说的“移除”是什么意思?这些数组是如何分配的?

如果您有一个通过声明创建的数组,例如:

代码语言:javascript
复制
struct foo my_foos[123];

您无法改变my_foos是123个元素的事实。当然,您可以通过维护一个单独的size_t foo_count变量来选择忽略其中的一些变量。

C中的数组通常不是动态的(与许多高级语言中的列表/数组不同)。您可以使用malloc()实现动态数组,这并不太难,但还不清楚您是否已经这样做了。

票数 1
EN

Stack Overflow用户

发布于 2013-10-07 22:41:43

如果您可以使用外部文件,请查看

它是存储在one头中的宏的集合,它允许您搜索什么。不需要链接额外的库,只需对文件执行#include操作,即可获得所需的内容。

你必须实现一个定制的UT_icd,提供初始化、复制和释放存储在数组中的元素的函数。

票数 0
EN

Stack Overflow用户

发布于 2013-10-07 23:05:35

你想要的实际上是一个链表。它是一个结构集合,每个结构指向列表中的第N个元素和下一个元素。这样,您就可以通过在链中取消链接来轻松删除任何元素。你可以用C语言在google上搜索链接表库,或者实现一个链表库(这是一个很好的练习)。C中的数组是静态内存范围,只有足够的空间容纳元素。没别的了。一般来说,您不能删除一个元素。但是,您可以使用realloc函数来调整现有数组的大小。对于你想要做的事情,我会选择链表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19227520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档