1 结构体指针的初始化:
// 1. 使用malloc分配内存,注意此方法需手动回收内存
MyData *myData = (MyData *) malloc(sizeof(MyData));
// 2. 先定义临时变量,然后取地址。注意此方法会自动回收内存,不适合作为返回数据
MyData mydata = {1,2,3};
MyData *myDataP = &MyData;
2:结构体指针作为返回参数,
int myFunction(Mydata *src, Mydata **dst) {
// 使用malloc分配内存,注意此方法需手动回收内存
MyData *myData = (MyData *) malloc(sizeof(MyData));
myData->a = 1;
myData->b = 2;
myData->b = 3;
// 将其返回, 上层函数可正常拿到数据
*dst = mydata;
// 先定义临时变量,然后取地址。注意此方法会自动回收内存,不适合作为返回数据
MyData mydata2 = {1,2,3};
MyData *myData3 = &MyData3;
// 将其返回,上层函数中取不到这个对象。应该是被释放了。
*(dst+1) = myData2;
*(dst+2) = myData3;
return 0;
}
int main(){
// 初始化二位指针,需指定一维指针的个数。这里设为3
MyData **dst = (MyData **)malloc(3*sizeof(MyData *));
// 初始化一维指针
MyData *src = (MyData *) malloc(sizeof(MyData));
myFunction(src, dst);
return 0;
}