美文网首页
05---B 结构体

05---B 结构体

作者: LuckTime | 来源:发表于2016-06-18 09:55 被阅读7次

组装,当数据元素类型不一样时,程序员组装新的数据类型。。

关键字 struct Liujian // 定义一种新类型
{
char name [20];
int age; //数据元素类型
char addr[120];
double soore;
};

分配字节数20+4+120+8=152(首地址对齐,并且是最大偏移量的整数倍)
int main()
{

Liujian a1; //使用结构体

Liujian a2{ “张三”,“18”,“南阳”,“88”};//初始化结构体哦
a1=a2;
a1.name = “张三”; //buxing ,因为数组没分配空间
a1.age = 18 ;可以

include《cstring》 需要头文件

可以通过更好方法 strcpy(字符数组名,字符串);
strlen(字符串或字符数组名)字符长度
strcmp(str1,str2) 比较两个字符串
strcat(字符数组名,字符串) 将后面的字符串追加到数组名的字符串后头

}

include <iostream>

//#include <algorithm>

using namespace std;
struct Student{
int age;
char name;
double score;
float hear;
short two;
//偏移量分析:1.首地址对其 2.总字符量占最大偏移量的整数倍 4+1+3+8+4+2+2 =24 (最后一个二是因为,总字符量不是8的整数倍,自动补全)
};

struct Student{
int age;
char name[20];
double score;
float hear;
short two;
//偏移量分析:1.首地址对其 2.总字符量占最大偏移量的整数倍 4+20+8+4+2+2 =40 (最后一个二是因为,总字符量不是8的整数倍,自动补全,并且在char分配中是一个一个分配的,不是一下分配20个字节给name)
};
main()
{

Student a1;
cout << sizeof(a1) <<endl;

  return 0;      

}

pragmapack(push) //保存对齐状态

pragmapack(4)//设定为4字节对齐

struct test
{

char m1;

double m4;

int m3;

};

pragmapack(pop)//恢复对齐状态

以上结构的大小为16,下面分析其存储情况,首先为m1分配空间,其偏移量为0,满足我们自己设定的对齐方式(4字节对齐),m1占用1个字节。接着开始为m4分配空间,这时其偏移量为1,需要补足3个字节,这样使偏移量满足为n=4的倍数(因为sizeof(double)大于n),m4占用8个字节。接着为m3分配空间,这时其偏移量为12,满足为4的倍数,m3占用4个字节。这时已经为所有成员变量分配了空间,共分配了16个字节,满足为n的倍数。如果把上面的#pragmapack(4)改为#pragma pack(8),那么我们可以得到结构的大小为24。

相关文章

  • 05---B 结构体

    组装,当数据元素类型不一样时,程序员组装新的数据类型。。 关键字 struct Liujian // 定义...

  • 结构体

    [toc] 结构体的定义方式 先定义结构体类型,再定义结构体变量 定义结构体类型的同时定义结构体变量 定义结构体类...

  • 【C语言笔记】<十九>结构体

    结构体的基本概念 结构体初始化 结构体的内存存储细节 结构体定义的方式 结构体类型的作用域 指向结构体的指针 结构...

  • C结构体和链表

    一,结构体变量定义及初始化 二,无名结构体 备注:无名结构体很少使用 三,宏定义结构体 四,结构体嵌套 五,结构体...

  • 结构体

    结构体定义* 结构体中的格式:* struch 结构体名* {* 结构体成员变量* }* 结构体中的特点* 1.结...

  • 结构体数组的定义

    结构体数组的定义 1、先定义结构体类型,再定义结构体数组 2、定义结构体类型的同时定义结构体数组 3、省略结构体类...

  • C#结构体,析构方法,跨程序访问

    结构体 结构体定义 结构体的语法格式: struct + 结构体名 { 结构体成员变量(相当于类中的字段) } 结...

  • 结构体

    结构体有名定义 无名定义 结构体嵌套定义 结构体内存对齐 结构体成员初始化 结构体变量引用 结构体的有名定义:直白...

  • 菜鸡学Swift3.0 13.结构体

    结构体 struct 是值类型 1.定义结构体 struct 结构体类型 { var 结构体属性:类型 ...} ...

  • 结构体

    结构体初识 结构体指针 结构体的匿名字段 结构体嵌套 Go语言中的OOP

网友评论

      本文标题:05---B 结构体

      本文链接:https://www.haomeiwen.com/subject/zanvdttx.html