大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
注意:如果函数参数里只有一个指向结构体的指针,是无法正确地返回结构体的值的。原因在于在编译的时候,会对入参p产生一个备份_p.
创新互联是一家集网站建设,城步企业网站建设,城步品牌网站建设,网站定制,城步网站建设报价,网络营销,网络优化,城步网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。参考此文:http://www.cnblogs.com/kaituorensheng/p/3246900.html
方法二:返回一个指向结构体的函数指针
#include "stdafx.h" #include "stdlib.h" #include "stdint.h" typedef struct Vector3 { int X; int Y; int Z; } Vector3; typedef struct Config { int mode; Vector3 *pData; } Config; void GetConfigData(Config** pConfig) { Config *cfg = (Config *)malloc(sizeof(Config)); cfg->mode = 1; cfg->pData = (Vector3 *)malloc(sizeof(Vector3)); cfg->pData->X = 2; cfg->pData->Y = 4; cfg->pData->Z = 6; *pConfig = cfg; } Config *GetConfigData1() { Config *cfg = (Config *)malloc(sizeof(Config)); cfg->mode = 3; cfg->pData = (Vector3 *)malloc(sizeof(Vector3)); cfg->pData->X = 5; cfg->pData->Y = 7; cfg->pData->Z = 9; return cfg; } int _tmain(int argc, _TCHAR* argv[]) { Config *cfg1 = (Config *)malloc(sizeof(Config)); cfg1->pData = (Vector3 *)malloc(sizeof(Vector3)); GetConfigData(&cfg1); printf("cfg1:%d, %d, %d, %d", cfg1->mode, cfg1->pData->X, cfg1->pData->Y, cfg1->pData -> Z); cfg1 = GetConfigData1(); printf("cfg1:%d, %d, %d, %d", cfg1->mode, cfg1->pData->X, cfg1->pData->Y, cfg1->pData->Z); free(cfg1); }