#include<stdio.h>
union sample
{
short i;
char ch;
float f;
};
typedef union sample SAMPLE;
int main()
{
printf("%d\n",sizeof(SAMPLE));
return 0;
}
//输出4个字节。共用体类型所占内存空间的大小取决于其成员中占内存空间最大的哪一个。在每一瞬间起作用的成员就是最后一次被赋值的成员,不能为共用体的所有成员同时进行初始化,只能对第一个成员进行初始化。共用体不能进行比较操作,也不能作为函数的参数。
//SAMPLE num; num.i=20;
//枚举数据类型
enum response{no,yes,none};//定义了一个枚举类型,no->0,yes->1,none->2;
enum response answer;//定义了一个枚举类型的变量
if(answer==yes)
{
…;
}
enum{no,yes,none}answer;
//定义一个枚举类型的数组
enum response answer[10];
enum response{no=-1,yes=1,none=0};//指定枚举常量的值
enum response{no=1,yes,none};//其后依次递增1
//枚举常量虽然是字符串,但是以整数值表示
12.3动态数据结构—单向链表
struct link
{
int date;
struct link *next;
};
//链表只能顺序访问,不能随机访问0,尾插法
#include<stdio.h>
struct link
{
int date;
struct link *next;
};
struct link *AppendNode(struct link *head)
{
struct link *p=NULL,*pr=head;
int date;
p=(struct link *)malloc(sizeof(struct link));
if(p==NULL)
{
exit(0);
}
if(head==NULL)
{
head=p;
}
else
{
while(pr->next!=NULL)
{
pr=pr->next;
}
pr->next=p;
scanf("%d",&date);
p->date=date;
p->next=NULL;
return head;
}
}
void DisplyNode(struct link *head)
{
struct link *p=head;
while(p!=NULL)
{
printf("%d ",p->date);
p=p->next;
}
}
void DeleteMemory(struct link *head)
{
struct link *p=head,*q=NULL;
while(p!=NULL)
{
q=p;
p=p->next;
free(q);
}
}
int main()
{
int i=0;//节点的个数
char c;
struct link *head=NULL;
scanf(" %c",&c);//前面有一个空格
while(c='y'||c='Y')
{
head=AppendNode(head);
DisplyNode(head);
scanf(" %c",&c);
i++;
}
DeleteMemory(head);
return 0;
}