c语⾔返回结构体,(CC++)⽤函数返回⼀个结构体
⽅法⼀: 参数⾥含有指向指针的指针。
注意:如果函数参数⾥只有⼀个指向结构体的指针,是⽆法正确地返回结构体的值的。原因在于在编译的时候,会对⼊参p产⽣⼀个备份_p.⽅法⼆:返回⼀个指向结构体的函数指针
#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);
}
C语⾔中free()函数释放struct结构体中的规律
并不是什么新鲜的事情,不过值得注意.⾸先我们知道,在使⽤struct来定义并声明⼀个变量时,将会⾃动划分出⼀个连续的储存空间(虽然根据某些对齐原则会出现内存间隙,但是⼤体上来说还是连续的)这⼀块连续空 ...
java socket传送⼀个结构体给⽤C++编写的服务器解析的问题
另⼀端是Java写客户端程序,两者之间需要通信.c++/c接收和发送的都是结构体,⽽Java是直接发送的字节流或者byte 数组.解决⽅法:c++/c socket 在发送结构体的时候其实发送的也是字 ...
c# 函数练习;结构体、枚举类型
* 结构体 1.就是⼀个⾃定义的集合,⾥⾯可以放各种类型的元素,⽤法⼤体跟集合⼀样. 注意:枚举类型和结构体都属于值类型. 2.定义的⽅法: struct student { public in ...
NX⼆次开发-如何在类外⾯定义⼀个结构体
#include #include #include using namespace NXOpen; u ...
⽤javascript 写个函数返回⼀个页⾯⾥共使⽤了多少种HTML 标签
今天我⽆意间看到⼀个⾯试题: 如何⽤javascript 写个函数返回⼀个页⾯⾥共使⽤了多少种HTML 标签? 不知你看到 是否蒙B了,如果是我⾯试,肯定脑⼦嗡嗡的响.... ⽹上搜了搜也没有到答 ...
Entity Framework 6 Recipes 2nd Edition(11-1)译 ->; 从“模型定义”函数返回⼀个标量值
第11章函数 函数提供了⼀个有⼒代码复⽤机制, 并且让你的代码保持简洁和易懂. 它们同样也是EF运⾏时能利⽤的数据库层代码.函数有⼏类: Rowset Functions, 聚合函数, Ranking ...
Entity Framework 6 Recipes 2nd Edition(11-2)译 ->; 为⼀个”模型定义”函数返回⼀个计算列
11-3. 为⼀个”模型定义”函数返回⼀个计算列 问题 想从”模型定义”函数⾥返回⼀个计算列 解决⽅案 假设我们有⼀个员⼯(Employee)实体,属性有: FirstName, LastName,和 ...
Entity Framework 6 Recipes 2nd Edition(11-5)译 ->; 从”模型定义”函数返回⼀个匿名类型
11-5. 从”模型定义”函数返回⼀个匿名类型 问题 想创建⼀个返回⼀个匿名类型的”模型定义”函数 解决⽅案 假设已有游客(Visitor) 预订(reservation)房间(hotel ) 的模型 ...
【转载】让c++ 函数返回⼀个数组
在c++中是不允许数组作为函数的返回值的 int [] someFunction( ); //ILLEGAL 要想实现函数返回⼀个数组,那返回对应数组⾥⾯类型的指针 you must return a ...
随机推荐
CentOS7新特性
⼀.CentOS7的4中模式 CentOS7⾥不在有0-6启动级别,⽽是4个aphical.target:多⼈模式,⽀持图形和命令⾏两种登录,对应之前的3,5级别 2.multi ...
JavaScript表单验证实例
1. 长度限制
Android Intent简介
Intent对象主要⽤来在Android程序的Activity,Service和BroadcastReceiver这3⼤组件之间传输数据,⽽针对这3⼤组件,有独⽴的Intent传输机制,分别如下:1. ...
c语言struct用法例子JavaEE:Cookie和Session
Cookie是客户端技术,程序把每个⽤户的数据以cookie的形式写给⽤户各⾃的浏览器.当⽤户使⽤浏览器再去访问服务器中的web资源时,就会带着各⾃的数据去.这样web资源处理的就是⽤户各⾃的数据了. ...
JDBC事务与保存点 JDBC简介(七)
事务简介 数据库事务(Database Transaction) ,是指作为单个逻辑⼯作单元执⾏的⼀系列操作,要么完全地执⾏,要么完全地不执⾏. 事务是必须满⾜4个条件(ACID) 事务的原⼦性( A ...
继承user表需要配置
AUTH_USER_MODEL = 'users.User' (应⽤名.模型类名)
gcc 与 glibc 的关系 glibc版本查看
glibc是什么,以及与gcc的关系?glibc是gnu发布的libc库,也即c运⾏库.glibc是linux 系统中最底层的api(应⽤程序开发接⼝),⼏乎其它任何的运⾏库都会倚赖于glibc.gl ...
lua中类的实现原理和实践
⼀.基础概念 Lua 本⾝是函数式的语⾔,但借助 metatable (元表)这个强⼤的⼯具,Lua 实现操作符重载易如反掌.. 下⽂将详细的解释在Lua 中实现类的原理,涉及到的细节点将拆分出来讲, ...
16、Java并发编程:Timer和TimerTask
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论