我试图运行下面的代码,但它在访问结构数组值时给了我垃圾数据。为什么会发生这种情况,我该如何解决这个问题?一旦我将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
出于好奇,为什么要为5个CoordinateData分配内存? – juanchopanza
只是随机的。没有理由 – user949110