编码规范
一定要注意编码规范,变量使用前要初始化,最好在定义的时候就进行初始化。所以。。。我之前的程序
存在问题,。
结构体嵌套
#include <stdio.h>
typedef struct test1
{
int a;
char b;
float c;
struct test1 *next;
}TEST1;
typedef struct test2
{
int data;
TEST1 t1;
}TEST2;
int main()
{
TEST2 test;
TEST1 a={9,'9',9.9,NULL};
test.data=10;
test.t1.a=1;
test.t1.b='1';
test.t1.c=3.14;
test.t1.next=NULL;
printf("TEST2 data=%d\n",test.data);
printf("TEST2 t1={%d,%c,%.2f,%p\n}",test.t1.a,test.t1.b,test.t1.c,test.t1.next);
test.t1.next=&a;
printf("TEST1 a={%d,%c,%.2f,%p\n}",test.t1.next->a,test.t1.next->b,test.t1.next->c,test.t1.next->next);
return 0;
}
枚举
枚举可用于需要定义多个宏定义常量的场景
#include <stdio.h>
enum week
{
MON=1,TUE,WED,THU,FRI,SAT,SUN
}WEEK;
int main(void)
{
WEEK;
WEEK=WED;
printf("%d\n",WEEK);
for(WEEK=MON;WEEK<=SUN;WEEK++)
{
printf("%d\n",WEEK);
}
return 0;
}
共同体
共同体的使用方法和结构体几乎一样,不过重点在与共同体的内存空间安排和结构体完全不一样。一个共同体的的内存字节大小是共同体中字节最大的成员的字节。
#include <stdio.h>
typedef union test
{
int a;
char b;
char c[30];
}TEST;
int main(void)
{
TEST t1;
printf("The union size=%ld t1=%ld\n",sizeof(TEST),sizeof(t1));
t1.b='a';//注意此处,只赋值了第二个成员。如果赋值后续成员,可能会乱码
printf("a=%d , b=%c, c=%s\n",t1.a,t1.b,t1.c);
return 0;
}