自定义结构体与对象类型之间的互转

//学生结构体
typedef struct student
{
    char name[20];  //姓名
    char sex;       //性别
    int age;        //年龄
}Student;

int main(int argc, const char * argv[])
{
    Student stu={"xiaorui",‘f‘,24};
    NSValue *structObject={0};
    //将结构体转换为对象
    structObject=[NSValue value:&stu withObjCType:@encode(Student)];
    NSLog(@"%@",structObject);

    //将对象转换为结构体
    Student stu2={0};
    [structObject getValue:&stu2];
    NSLog(@"%s %c %d",stu2.name,stu2.sex,stu2.age);
    return 0;
}
时间: 2024-12-10 21:28:04

自定义结构体与对象类型之间的互转的相关文章

nsrange和自定义结构体转换为nsvalue类型

The NSNumber class is itself a subclass of the basic NSValue class, which provides an object wrapper around a single value or data item. In addition to the basic C scalar types, NSValue can also be used to represent pointers and structures. The NSVal

typedef 和 自定义结构体类型

在自定义结构体类型时会用到typedef关键字.大家都知道typedef是取别名的意思,在C语言中跟它容易混淆的有const,#define等,其区别不在本篇文章讨论之列. 1 /*定义单链表结点类型*/ 2 3 typedef char ElemType; 4 5 typedef struct dNode {//声明单链表结点类型 6 7 ElemType data; 8 9 struct dNode *next; //指针域 }LNode, *LinkList; //定义此结构体变量stru

C#语言基础——结构体和枚举类型

结构体和枚举类型 一.结构体(struct) 结构类型是用户自己定义的一种类型,它是由其他类型组合而成的,可包含构造函数.常数.字段.方法.属性.索引器.运算符.事件和嵌套类型的值类型.结构在几个重要方面不同于类:结构为值类型而不是引用类型,并且结构不支持继承. 用结构的主要思想是用于创建小型的对象,如Point和FileInfo等等.这可以节省内存,因为没有如类对象所需的那样有额外的引用产生.例如,当声明含有成千上万个对象的数组时,这会引起极大的差异. 结构体是一个变量组,将一组变量放在一起,

结构体和值类型(转)

如果你曾经使用过 Objective-C 或者像 Ruby,Python,JavaScript 这样的语言,可能会觉得 Swift 里的结构体就像外星人一样奇异.类是面向对象编程语言中传统的结构单元.的确,和结构体相比,Swift 的类支持实现继承,(受限的)反射,析构函数和多所有者. 既然类比结构体强大这么多,为什么还要使用结构体?正是因为它的使用范围受限,使得结构体在构建代码块 (blocks) 的时候非常灵活.在本文中,你将会学习到结构体和其他的值类型是如何大幅提高代码的清晰度.灵活性和可

【Unity Shaders】学习笔记——SurfaceShader(二)两个结构体和CG类型

[Unity Shaders]学习笔记——SurfaceShader(二)两个结构体和CG类型 转载请注明出处:http://www.cnblogs.com/-867259206/p/5596698.html 写作本系列文章时使用的是Unity5.3. 写代码之前: 当然啦,如果Unity都没安装的话肯定不会来学Unity Shaders吧? 阅读本系列文章之前你需要有一些编程的概念. 在VS里面,Unity Shaders是没有语法高亮显示和智能提示的,VS党可以参考一下这篇文章使代码高亮显示

结构体、枚举类型——8月3日

一.结构体.美剧类型都是属于值类型 (一)结构体 就是一个自定义集合,里面可以放各种类型的元素,用法大体跟集合一样. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Collections;//下面要用到ArrayList集合,就要先引用这个 namespace 结构体_枚举类型 { cl

qsettings 保存自定义结构体(QVariant与自定义结构体相互转化)

参考博文:QVariant与自定义数据类型转换的方法. 这里摘取其关键内容: 1.将自定义数据类型使用Q_DECLARE_METATYPE宏进行声明,便于编译器识别. 2.在插入对象的时候,声明QVariant对象,使用其setValue方法添加自定义对象. 3.在读取的时候,采用QVariant对象的value方法返回自定义对象. 写入: //类型转换 QVariant v; v.setValue(MyStruct);  读取: //转换为自定义的结构体实例 MyStruct s = v.va

stl容器之--自定义结构体作为stl容器元素成员的使用

自定义结构体作为stl容器元素成员的设计要求之一是:在对待自定义类型时和内置类型必须是一致的,甚至自定义类型的支持更好. <C++标准程序库>: set和multiset set和multiset会根据特定的排序准则,自动将元素排序.两者不同在于multiset允许重复而set不允许. 只要是assignable.copyable.comparable(根据某个排序准则)的型别T,都可以成为set或multiset的元素型别.没有传入特别排序准则,就采用缺省准则less(这是一个仿函数,以op

结构体_枚举类型

namespace 结构体_枚举类型{    class Program    {        struct jiegouti        {            public int fenshu;            public string name;            public string kecheng;        }        static void Main(string[] args)        {            jiegouti a =