gpt4 book ai didi

c - 模拟 C 中各种结构的 array_pop

转载 作者:行者123 更新时间:2023-11-30 15:45:06 25 4
gpt4 key购买 nike

我是 C 语言新手,但我目前正在开发一个项目,我无法弄清楚如何完成所需的工作。

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

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

我的结构定义如下

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;

下面是结构体的初始化方式

callLogSearchData = calloc(numRows, sizeof(callLogSearchDataStruct));
callLogSearch = calloc(numRows, sizeof(callLogSearchResultStruct));

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

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

callLogSearchData[dataRow].aParty = NULL;
callLogSearchData[dataRow].bParty = NULL;
callLogSearchData[dataRow].cleardownCause = NULL;
callLogSearchData[dataRow].date = NULL;
callLogSearchData[dataRow].time = NULL;
callLogSearchData[dataRow].outboundLegs = NULL;

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

感谢您提供的任何帮助。

最佳答案

“删除”是什么意思?数组是如何分配的?

如果您有一个由如下声明创建的数组:

struct foo my_foos[123];

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

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

关于c - 模拟 C 中各种结构的 array_pop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19227520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com