结构体

/*结构体形式 struct 结构体名 变量
结构体变量定义的三种形式
struct student
{
变量类型 成员1;(成员也可以是数组)
...
变量类型 成员n;
};//一定要有分号
struct student stu(变量);变量可以是多个


struct student
{
变量类型 成员1;(成员也可以是数组)
...
变量类型 成员n;
}stu1,stu2;


struct
{
变量类型 成员1;(成员也可以是数组)
...
变量类型 成员n;
}stu1,stu2;
*/

int main(int argc, char *argv[]) {
struct
{
char name[20];
char xb;
int age;
float cj;
}stu1,stu2;


strcpy(stu1.name,"zhangsan");
stu1.xb = 'm';
stu1.age = 19;
stu1.cj = 89.5;
printf("%s %c %d %.1f ",stu1.name,stu1.xb,stu1.age,stu1.cj);

strcpy(stu2.name,"lisi");
stu2.xb = 'w';
stu2.age = 17;
stu2.cj = 79.5;
printf("%s %c %d %.1f ",stu2.name,stu2.xb,stu2.age,stu2.cj);


struct student
{
char name[20];
char xb;
int age;
float cj;
};
struct student stu;
strcpy(stu.name,"wangwu");
stu.xb = 'm';
stu.age = 20;
stu.cj = 99.5;
printf("%s %c %d %.1f",stu.name,stu.xb,stu.age,stu.cj);
return 0;
}

运行结果

 

strcpy功能   strcpy(参数1,参数2);   //将参数2复制到参数1内仅适用于字符串复制

strcat功能   strcat(参数1,参数2);   //将参数2的值打印到参数1后

strlen功能  //获取字符串的长度    例如:char k[20] = "ajfkdfkjdk";  int i;  i = strlen(k);  printf("%d",i);  //结果为10

char k[20];
scanf("%s",&k);
int i;
i = strlen(k);
printf("%d",i);

运行结果

typedef函数

函数形式  typedef   原函数类型    新函数类型//相当于将新函数类型等价于原函数类型

如:

typedef int inter;
inter i = 10;
int j = 5;
printf("%d ",i);
printf("%d",j);

运行结果

int main(int argc, char *argv[]) {
typedef struct stu   //stu可有可无
{
char name[20];
char xie;
int age;
}student;

student a;     //定义结构体变量a
strcpy(a.name,"lisi");
a.xie = 'm';
a.age = 13;
printf("%s %c %d ",a.name,a.xie,a.age);
return 0;
}

运行结果

//结构体的嵌套 

int main(int argc, char *argv[]) {
struct cade
{
int yuwen;
int shuxue;
int yinyu;
};
struct person
{
char name[20];
int age;
struct cade cj;   //将结构体struct cade嵌套到结构体struct person中
};
struct person basic = {
"xiaoming",19,{89,85,92},
};
printf("%s %d %d %d %d",basic.name,basic.age,basic.cj.yuwen,basic.cj.shuxue,basic.cj.yinyu);
return 0;
}

运行结果

结构体指针

int main(int argc, char *argv[]) {
typedef struct stu
{
char name[20];
char xb;
int age;
}student;
student a = {"wangwu",'m',19};
student *p = &a;
printf("%s %c %d ",(*p).name,(*p).xb,(*p).age);
printf("%s %c %d ",p->name,p->xb,p->age);        //(p->)相当于((*p).);

//可以对结构体里面的内容进行修改 如下(未使用结构体指针时也可以对结构体里面的内容进行修改 直接修改就行)

strcpy(p->name,"zhangsan");  
p->xb = 'f';
p->age = 50;
printf("%s %c %d ",(*p).name,(*p).xb,(*p).age);
return 0;
}

运行结果

 

枚举类型

int main(int argc, char *argv[]) {
enum color{red,green,black,blue};//枚举类型 ,在第二个变量之后不能将其赋值为1,因为在第二个变量之前的数不能为负数,也可以不对变量进行赋值,那么默认值为0开始,依次加1
int icolor;
scanf("%d",&icolor);//根据输入的数字进行判断
switch(icolor)
{
case red:
printf("this is red ");
break;
case green:
printf("this is green ");
break;
case black:
printf("this is black ");
break;
case blue:
printf("this is blue ");
break;
default:
printf("??? ");
break;
}

return 0;
}

运行结果

共用体

int main(int argc, char *argv[]) {
//共用体的大小是所包含的数据成员中最大内存长度的大小
union student //共用体也称联合体,定义变量可以与结构体的一样 ,共用体定义的是一块为所有数据成员共享的内存
{
int age;
char u;
};
union student a;
a.age = 65; //共用体只需初始化一个变量就够了,但其类型必须和共用体的第一个成员的类型一致,如第一个成员的是整型的,那么初始化的这个变量也必须是整型的
printf("%d ",a.age);
printf("%c ",a.u); //改变共用体的一个成员其他的成员也会随之改变
return 0;
}

原文地址:https://www.cnblogs.com/2277098974-qqcom/p/6835931.html