如果想让函数返回一个结构体指针,必须要malloc
或者new
一个空间,否则返回一个局部变量的地址,结果是无法确定的 。
#include <iostream>
typedef struct
{
double x;
double y;
double z;
} calculate;
calculate *math_calculate(double a, double b);
int main() {
calculate *cc;
cc = math_calculate(0.5, 0.2);
std::cout << "x : " << cc->x << "\ny : " << cc->y << "\nz : " << cc->z << std::endl;
std::cout << "Hello, World!" << std::endl;
free(cc); //记得free
return 0;
}
calculate *math_calculate(double a, double b)
{
calculate *cal = (calculate*)malloc(sizeof(calculate)); // 必须malloc,否则报错:interrupted by signal 11: SIGSEGV
cal->x = a + b;
cal->y = a - b;
cal->z = a * b;
return cal;
}