自定义类型

1.什么是结构体?为什么要有结构体?
一种自定义类型

struct Student
{
 char _name[20];
 char _garden[3];
 int age;
 char _number[11];
};

2.什么是结构体内存对齐?为什么要内存对齐?如何进行内存对齐?
空间换时间;较小内存空间情况下不考虑内存对齐问题;
vs和linux默认对齐参数?是否可以设置?能否让结构体按照任意字节来进行对齐?
vs:8 linux:4
假设:8字节对齐
结构体:计算内存
可以进行设置 #pragma pack(n) n:1.2.4.6.8.16;
(1)让结构体中的每个成员放在一个对齐的位置上,结构体中第一个成员不需要考虑;
min(默认对齐参数,当前成员类型的大小)当前该成员相对与结构体起始位置的偏移量是否为最小值的整数倍?
(2)结构体整体对齐
min(默认对其参数,是否为结构体内成员最大类型大小)
4.结构体中某个成员相对于结构体起始位置的偏移量?
include<stddef.h> 宏:offsetof(struct A,c) ;
5.什么是大小端?如何测试大小端?考虑大小端的情况?
关于计算机网络传输;大端模式: 字数据的高字节存储在低地址中,而字数据的低字节存储在高地址中。
小端模式: 字数据的高字节存储在高地址中,而字数据的低字节存储在低地址中。

void test()
{
struct stu
{
int a;
char ch;
}c;
c.a=1;
if(c.ch==1)
printf("小端\n");
else
printf("大端\n");
}

6."."和“->"d的相同点和不同
相同点:两个都是二元操作符,其右操作符是成员的名称。
不同点:点操作符左边的操作数是一个“结果为结构”的表达式;箭头操作符左边的操作数是一个指向结构的指针。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值