今天老师讲了结构体、内存对齐、共用体。
代码
结构体
#include <stdio.h>
struct Student1
{
int id;
char name[20];
}s4 = {2, "小红"};
int main()
{
struct Student1 s1;
struct Student1 s5 = {10, "小明"};
printf ("id = %d,name = %s\n", s5.id, s5.name);
struct Student1 *ps = &s4;
s4.id = 20;
printf ("id = %d,name = %s\n", ps->id, ps->name);
return 0;
}
内存对齐
#include <stdio.h>
struct Test
{
char c1;
int a;
char c2;
};
struct Test1
{
char c1;
char c2;
char c3;
int a;
};
struct Test2
{
char c1;
short s;
int a;
char c3;
struct Test t1;
int a[20];
};
int main()
{
printf ("sizeof Test = %lu\n", sizeof(struct Test));
printf ("sizeof Test = %lu\n", sizeof(struct Test1));
printf ("sizeof Test = %lu\n", sizeof(struct Test2));
struct Test2 t1, t2;
t1 = t2;
return 0;
}
共同体
#include <stdio.h>
int func()
{
union
{
unsigned int a;
unsigned char c;
}t;
t.a = 0x12345678;
return (t.c == 0x78);
}
int main()
{
if (func() == 1)
printf ("小端\n");
else
printf ("大端\n");
return 0;
}
总结
今天老师讲的这几个知识很实用,对于今后写程序有很大的帮助。再内存对齐那一块我之前还有一些问题,之后和同学探讨了一下在加上老师的讲解我很快就理解了这个知识点。我发现之前的一些功能的实现有很多瑕疵和复杂化,今天讲的这几个知识点可以解决这个问题。