对结构体struct的认识
来源:互联网 发布:p2p源码下载 编辑:程序博客网 时间:2024/05/07 05:22
Struct的作用:在网络协议,通信控制,嵌入式系统的C/C++的编程中,我们经常传送的不是简单字节流(char型数组),而是多种数据结合的一个整体,其表示形式是一个结构体。
定义初始化结构体与使用结构体指针
#include <stdio.h>
struct student
{
int num;
char *name;//name[20]
int age;
int sex;
};
int main()
{
struct student stu = {.num = 1,.name = "zhangsan",.age = 12,.sex = 'F'};
struct student *p_stu = &stu;
scanf("%d",&(stu.num));
scanf("%s",&(stu.name));
scanf("%s",&(p_stu->sex));
stu.num = 1;
stu.name = (char *)malloc(sizeof (char)* 100);
strcmp(stu.name,"zhangsan");
p_stu->num = 2;
p_stu->name ="lisi";
printf("%d\n",stu.num);
printf("%s\n",stu.name);
}
在结构体中还要注意内存空洞
#include <stdio.h>
struct node
{
char ch;
short num;
char ch1;
};
int main()
{
struct node p;
printf("sizeof(p) = %d\n",sizeof(p));
return 0;
}
在这个程序中占6个字节
#include <stdio.h>
struct node
{
char ch;
int num;
char ch1;
};
int main()
{
struct node p;
printf("sizeof(p) = %d\n",sizeof(p));
return 0;
}
在这个程序中字节却是12个;
从这里里总结出:
a 只要在结构体有大于等于4个字节的变量类型,那就以字划分
b 若在结构体中所有的变量类型都小于4个字节就以半个字节划分
但也存在特例
#include <stdio.h>
struct node
{
char ch;
short num;
char ch1;
int num1;
};
int main()
{
struct node p;
printf("sizeof(p) = %d\n",sizeof(p));
return 0;
}
如果按上面的总结方法这个为8个字节但实际为12个字节
结构体有大于等于4个字节的变量类型且
有这个结构char ch;
short num;
char ch1;
这个结构就占八个字节
- 对结构体struct的认识
- 对struct的认识
- 对 dpif_class 结构体的一点认识
- 对结构体联合体的认识
- 对JavaWeb的结构认识
- struct--------构造函数对结构体初始化的影响。
- VC++中 extern 对 struct 结构体的应用
- c++ 中 extern 对struct 结构体的使用
- struct--------构造函数对结构体初始化的影响
- 对结构体及位段的认识
- 对函数与结构体的浅薄认识
- 对ARM9哈佛结构的认识
- 对ARM9哈弗结构的认识
- 对ARM9哈佛结构的认识
- struct 结构体的创建
- struct 结构体的大小
- 结构体struct的sizeof
- C#的Struct结构体
- 《JavaScript Dom编程艺术》学习笔记01
- Hive常规操作总结
- 高级IO学习总结——异步IO
- linux目录结构
- 信号
- 对结构体struct的认识
- 文章标题
- matlab 实现数字图像的傅立叶变换及滤波锐化
- 采用docker overlay存储驱动
- 多重循环:为何将繁忙任务放入内层
- HeadFirst学习之装饰者模式
- 三极管做开关管的总结(理解三极管)
- 代码的抽象三原则
- 7.C#编程学习——属性