gpt4 book ai didi

c - 函数内的动态结构数组分配

转载 作者:行者123 更新时间:2023-12-02 08:53:59 25 4
gpt4 key购买 nike

我正在尝试在函数内分配结构数组。

我的结构如下:

 typedef struct{
uint16_t taskNumber;
uint16_t taskType;
double lat;
double lon;
double speed;
uint8_t successCriteria;
uint16_t successValue;
uint8_t nextPoint;
}missionPoint;

在我的代码中,我声明了一个missionPoint指针,然后将其传递给函数,该函数将在解析文件并计算出它需要有多大之后动态分配它。目前,我的代码如下所示:

 missionPoint* mission;    //declaring the pointer
parseMission(mission);

parseMission 函数将解析一个特定的文件并找出我需要多少个 MissionPoints,然后按以下方式分配它:

 mission = (missionPoint*) malloc(n * sizeof(missionPoint));

其中 n 是我需要的已解析任务点数。

问题是在函数内部我可以看到正确的值,但在函数外部看不到;一旦函数返回,就好像什么都没发生一样。

非常感谢您的帮助,以便该函数修改原始指针,并且我可以从函数外部看到数据。

最佳答案

您需要传递对指针的引用,即双指针,因为地址本身将被修改:

missionPoint *mission;
parseMission(&mission);

parseMission 的参数现在应该是 missionPoint ** 类型,而不是 missionPoint *:

*mission = (missionPoint*) malloc(n * sizeof(missionPoint));

如果您只想修改 mission 指向的内存,则没有必要这样做,但这是不可避免的,因为您正在为指针本身分配一个新值。

另请注意,在 C 中不需要强制转换 malloc 的返回值。

关于c - 函数内的动态结构数组分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6349602/

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