gpt4 book ai didi

c - 将指针传递给函数,数据在函数中显示为已初始化,返回时显示为未初始化

转载 作者:太空宇宙 更新时间:2023-11-04 05:06:19 26 4
gpt4 key购买 nike

我正在向函数 GetCurrentDate() 传递指向 tm 结构的指针。在该函数中,我打印未初始化的数据,然后是初始化的。预期结果。

然而,当我返回时,tm 结构显示为未初始化。请参阅下面的控制台输出。我做错了什么?

uninitialized date:??? ???-1073908332 01:9448278:-1073908376 -1217355836

initialized date:Wed May 5 23:08:40 2010

Caller date:??? ???-1073908332 01:9448278:-1073908376 -121735583

int main()
{
test();
}

int test()
{
struct tm* CurrentDate;
GetCurrentDate(CurrentDate);
printf("Caller date:%s\n",asctime (CurrentDate));
return 1;
}

int GetCurrentDate(struct tm* p_ReturnDate)
{
printf("uninitialized date:%s\n",asctime (p_ReturnDate));
time_t m_TimeEntity;
m_TimeEntity = time(NULL); //setting current time into a time_t struct

p_ReturnDate = localtime(&m_TimeEntity); //converting time_t to tm struct
printf("initialized date:%s\n",asctime (p_ReturnDate));
return 1;
}

最佳答案

您正在更新函数中的指针 p_ReturnDate,而不是更新 p_ReturnDate 指向的结构。因为指针是按值传递的,所以更新不会影响调用者。

也正如 Joseph Quinsey 指出的那样你需要提供一个地方来放置结果。您只是在调用者中分配一个指针,而不是整个结构。

关于c - 将指针传递给函数,数据在函数中显示为已初始化,返回时显示为未初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2777181/

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