结构体指针和结构体对象的创建、置空、赋值以及与string的转换
2013-07-02 21:16
417 查看
typedef struct Info { char name[5]; char addr[10]; int age; double salary; }tInfo, *pInfo; //tInfo为结构体Info的别名 struct stTest { char name[5]; char addr[10]; int age; double salary; }; int _tmain(int argc, _TCHAR* argv[]) { //结构体指针的创建、置空、赋值 pInfo info = new tInfo(); memset(info, 0 ,sizeof(tInfo)); info->age = 10; strcpy(info->name, "zhou"); strcpy(info->addr,"shandong"); info->salary = 123.123; //指针的大小为4,结构体的大小采用对齐模式,32位下是4字节对齐 //下面的计算为:32 = 8+12+4+8 int a = sizeof(tInfo);//32 int b = sizeof(Info);//32 int c = sizeof(pInfo);//4 int d = sizeof(info);//4 //结构体转为string string str; str.assign((const char*)info, sizeof(tInfo)); //把string转为结构体 pInfo get = new tInfo(); memcpy(get, str.c_str(), str.size()); //结构体对象创建、置空、赋值 stTest st; memset(&st, 0, sizeof(stTest)); strcpy(st.addr, "shandong"); strcpy(st.name, "zhou"); st.age = 33; st.salary = 6000.37; //结构体转为string string temp; temp.assign((const char*)&st, sizeof(st)); //string转为结构体 stTest stget; memcpy(&stget, temp.c_str(), temp.size()); //结构体指针的创建 stTest* aa = &stget; return 0; }
相关文章推荐
- Java中创建String、Integer、Charater直接赋值与new一个对象的区别
- Golang 父子对象与JSON互相转换以及struct结构体内部的反引号该如何定义字段编码生成json字符串的写法
- python调用C++,传递结构体与结构体指针,以及嵌套结构体
- String对象的两种赋值方式解析与String str=new String("abc")创建了几个对象
- JAVA与C++传递、赋值以及返回对象(指针、引用)
- (原创)深入研究java对String字符串对象的创建以及管理
- 深入研究java对String字符串对象的创建以及管理【转帖】
- C#枚举 枚举和int以及string类型之间的转换 结构 重载 全局变量
- 看到的强大的分析贴关于String对象的创建以及管理(学习了)
- 深入研究java对String字符串对象的创建以及管理
- 结构体相关的计算(结构体指针加一以及强制类型转换后加一)
- C++类对象创建过程(分配空间、赋值和初始化、对象初始化顺序、虚函数表指针)
- Java基础学习19(String类型对象在内存中的分布以及与包装类之间的转换)
- 比对一下,字符串赋值和实体对象赋值,理解String创建新对象与实体引用
- 6-2-1 字符串-字符串变量String-创建字符串变量-初始化字符串变量-字符串连接-输入字符串(单词、行)-对象变量的赋值-比较两个字符串是否同一个-比较两个字符串内容是否相同
- 字符串与正则表达式1、字符串 String类对象是不可改变的,对于String对象的重新赋值在本质上是重新创建了一个String对象并将新值赋予该对象,其方法ToString对性能的提高并非很显著。
- 【转】深入研究java对String字符串对象的创建以及管理
- 深入研究java对String字符串对象的创建以及管理
- java中创建String类型对象的两种方式以及在使用equals()和“==”两种方法时的区别
- JAVA的StringBuffer类(转载整理)____非常重要的一个类,线程安全,不用每次创建一个对象,以及和String的区别