gpt4 book ai didi

c++ - 访问结构数组时打印的垃圾数据

转载 作者:行者123 更新时间:2023-11-30 01:24:26 24 4
gpt4 key购买 nike

我正在尝试运行以下代码,但它为我提供了有关访问结构数组值的垃圾数据。为什么会发生这种情况,我该如何解决?一旦我将 malloc 部分移动到主要功能,它似乎就可以工作了。但我想将 malloc 保留在一个单独的函数中。

#include <cstdlib>
#include <limits>
#include <iostream>
using namespace std;

/*
*
*/
typedef struct{
float x;
float y;
} CoordinateData;

void tester(CoordinateData* cd_data){
cd_data = (CoordinateData*)malloc(5*sizeof(CoordinateData));
CoordinateData data = {41.2525,74.0744};
*cd_data = data;

}
int main(int argc, char** argv) {

CoordinateData* cd_data;
tester(cd_data);
std::cout << (*cd_data).x << "::" << (*cd_data).y << std::endl;
}

我得到的输出是 2.42126e-39::-1.51015e-05预期输出为 41.2525::74.0744

最佳答案

通过地址而不是值传递 cd_data:

void tester(CoordinateData** cd_data)
{
*cd_data = (CoordinateData*)malloc(5*sizeof(CoordinateData));
CoordinateData data = {41.2525,74.0744};
*(*cd_data) = data;
}

int main(int argc, char** argv)
{
CoordinateData* cd_data = NULL;
tester(&cd_data);
std::cout << (*cd_data).x << "::" << (*cd_data).y << std::endl;
free(cd_data);
return EXIT_SUCCESS
}

另请注意,您缺少的 main() 的返回值。还。这个问题被标记为 C 和 C++。如果是后者,用newdelete[]代替mallocfree

关于c++ - 访问结构数组时打印的垃圾数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13599114/

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