zoukankan      html  css  js  c++  java
  • (C/C++) 用函数返回一个结构体

    方法一: 参数里含有指向指针的指针。

    注意:如果函数参数里只有一个指向结构体的指针,是无法正确地返回结构体的值的。原因在于在编译的时候,会对入参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);
    }
    

      

  • 相关阅读:
    Scala依赖注入
    Scala实现树形结构
    Spark GraphX快速入门
    mysql服务自启【Linux】
    Centos7安装mysql5.6
    Scala路径依赖【内部类】
    spark查看DF的partition数目及每个partition中的数据量【集群模式】
    Python自定义异常及抛出异常
    Spark应用【根据新df更新旧df】
    Linux安装JDK
  • 原文地址:https://www.cnblogs.com/fdyang/p/6572880.html
Copyright © 2011-2022 走看看