结构体是 c 中 的数据类型
定义结构体 使用
struct 定义一个包含多个成员的新的数据类型
tag 是结构体标签。
member-list 是标准的变量定义,比如 int i; 或者 float f,或者其他有效的变量定义。
variable-list 结构变量,定义在结构的末尾,最后一个分号之前,可以指定一个或多个结构变量。
在一般情况下,tag、member-list、variable-list 这 3 部分至少要出现 2 个

  1. struct character //人物
  2. {
  3. char character1[50];
  4. char character2[50];
  5. char character3[100];
  6. int character4;
  7. }charact;

另外两种定义方法

  1. //此声明声明了拥有3个成员的结构体,分别为整型的a,字符型的b和双精度的c
  2. //结构体的标签被命名为SIMPLE,没有声明变量
  3. struct SIMPLE
  4. {
  5. int a;
  6. char b;
  7. double c;
  8. };
  9. //用SIMPLE标签的结构体,另外声明了变量t1、t2、t3
  10. struct SIMPLE t1, t2[20], *t3;
  11. //也可以用typedef创建新类型
  12. typedef struct
  13. {
  14. int a;
  15. char b;
  16. double c;
  17. } Simple2;
  18. //现在可以用Simple2作为类型声明新的结构体变量
  19. Simple2 u1, u2[20], *u3;

初始化结构体

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include "test.h"
  5. struct character //人物 类型
  6. {
  7. char character1[50];
  8. char character2[50];
  9. char character3[100];
  10. char character4[100];
  11. }charact={"一号","二号","三号","四号"};
  12. int main(int argc, char *argv[]) {
  13. printf("character1:%s\ncharacter2:%s\ncharacter3:%s\ncharacter4:%s\n",charact.character1,charact.character2,charact.character3,charact.character4);
  14. system("pause");
  15. return 0;
  16. }

显示
image.png
访问结构成员 >>>> 结构的用法 >>>成员访问运算符(.)

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include "test.h"
  5. struct character //人物 类型
  6. {
  7. char character1[50];
  8. char character2[50];
  9. char character3[100];
  10. char character4[100];
  11. };
  12. int main(){
  13. struct character a1; //声明 a1 ,类型为 characrter
  14. struct character a2; //一个结构体 使用在结构上
  15. //a1 详述
  16. strcpy(a1.character1,"超人"); // strcpy 复制
  17. strcpy(a1.character2,"巨人");
  18. strcpy(a1.character3,"蝙蝠侠");
  19. strcpy(a1.character4,"外星人");
  20. //a2
  21. strcpy(a2.character1,"一号");
  22. strcpy(a2.character2,"二号");
  23. strcpy(a2.character3,"三号");
  24. strcpy(a2.character4,"四号");
  25. //输出a1
  26. printf("character1:%s\n",a1.character1);
  27. printf("character2:%s\n",a1.character2);
  28. printf("character3:%s\n",a1.character3);
  29. printf("character4:%s\n",a1.character4);
  30. //a2
  31. printf("character1:%s\n",a2.character1);
  32. printf("character2:%s\n",a2.character2);
  33. printf("character3:%s\n",a2.character3);
  34. printf("character4:%s\n",a2.character4); //成员访问运算符 .
  35. system("pause");
  36. return 0;
  37. }

显示
image.png
结构作为函数传参
结构作为函数参数,传参方式与其他类型的变量或指针类似 ```c

include

include

include

include “test.h”

struct character //人物 类型 { char character1[50]; char character2[50]; char character3[100]; char character4[100]; }; //声明 void printcharacter( struct character c1); int main(){

  1. struct character a1; //声明 a1 ,类型为 characrter
  2. struct character a2; //一个结构体 使用在结构上
  3. //a1 详述
  4. strcpy(a1.character1,"超人"); // strcpy 复制
  5. strcpy(a1.character2,"巨人");
  6. strcpy(a1.character3,"蝙蝠侠");
  7. strcpy(a1.character4,"外星人");
  8. //a2
  9. strcpy(a2.character1,"一号");
  10. strcpy(a2.character2,"二号");
  11. strcpy(a2.character3,"三号");
  12. strcpy(a2.character4,"四号");
  13. printcharacter(a1);
  14. printcharacter(a2);
  15. system("pause");
  16. return 0;

} void printcharacter( struct character c1) //(定义 struct 结构体 新的类型) { printf(“character1:%s\n”,c1.character1); printf(“character2:%s\n”,c1.character2); printf(“character3:%s\n”,c1.character3); printf(“character4:%s\n”,c1.character4);

}

  1. 指向结构的指针<br /> 定义指针 struct character *c1;<br /> 指针变量中存储结构变量的地址: c1 = &a1;<br /> 为了使用指向该结构的指针访问结构的成员,您必须使用 -> 运算符 c1->character1;
  2. ```c
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6. #include "test.h"
  7. struct character //人物 类型
  8. {
  9. char character1[50];
  10. char character2[50];
  11. char character3[100];
  12. char character4[100];
  13. };
  14. //声明
  15. void printcharacter( struct character *c1);
  16. int main(){
  17. struct character a1; //声明 a1 ,类型为 characrter
  18. struct character a2; //一个结构体 使用在结构上
  19. //a1 详述
  20. strcpy(a1.character1,"超人"); // strcpy 复制
  21. strcpy(a1.character2,"巨人");
  22. strcpy(a1.character3,"蝙蝠侠");
  23. strcpy(a1.character4,"外星人");
  24. //a2
  25. strcpy(a2.character1,"一号");
  26. strcpy(a2.character2,"二号");
  27. strcpy(a2.character3,"三号");
  28. strcpy(a2.character4,"四号");
  29. printcharacter(&a1);
  30. printcharacter(&a2);
  31. system("pause");
  32. return 0;
  33. }
  34. void printcharacter( struct character *c1) //(定义 struct 结构体 新的类型)
  35. {
  36. printf("character1:%s\n",c1->character1);
  37. printf("character2:%s\n",c1->character2);
  38. printf("character3:%s\n",c1->character3);
  39. printf("character4:%s\n",c1->character4);
  40. }