VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1040|回复: 1

[交流] c语言学习之路的点滴记录--结构体的基本使用

[复制链接]
13_avatar_middle
最佳答案
1 
在线会员 发表于 2021-8-22 22:54:27 | 显示全部楼层 |阅读模式
本帖最后由 小白学编程 于 2021-8-22 22:57 编辑
  1. [size=4][size=6][color=Lime]#include <stdio.h>
  2. #include <Windows.h>
  3. #include <stdlib.h>
  4. #pragma warning(disable:4996)

  5. typedef struct Person
  6. {
  7.         //不要再结构体定义的时候赋值
  8.         char name[64];
  9.         int age;
  10. }myPerson;  //myPerson是struct Person类型的别名

  11. void test01()
  12. {
  13.         myPerson p = { "张三",20 };
  14.         printf("姓名:%s年龄:%d\n", p.name,p.age);
  15. }

  16. struct Person2
  17. {
  18.         char name[64];
  19.         int age;
  20. }myPerson02; //不加typedef   myPerson是一个结构体变量

  21. void test02()
  22. {
  23.        
  24.         myPerson02.age = 30;
  25.         strcpy(myPerson02.name, "李四");
  26.         printf("姓名:%s 年龄:%d \n", myPerson02.name, myPerson02.age);
  27. }

  28. //这种类型是匿名类型  后期无法创建名称  不常用 知道就好
  29. struct
  30. {
  31.         char name[64];
  32.         int age;
  33. }myPerson3 = { "王五",40 };

  34. void test03()
  35. {
  36.         printf("姓名:%s 年龄:%d \n", myPerson3.name, myPerson3.age);
  37. }

  38. void test04()
  39. {
  40.         //再栈上创建结构体变量
  41.         struct Person p1 = { "aaa",10 };
  42.         //再堆区创建结构体变量
  43.         struct Person* p2 = malloc(sizeof(struct Person));
  44.         if (p2 == NULL)
  45.         {
  46.                 printf("内存分配不成功");
  47.         }
  48.         else
  49.         {
  50.                 p2->age = 100;
  51.                 strcpy(p2->name, "赵六");
  52.                 printf("姓名:%s 年龄:%d \n", p2->name, p2->age);
  53.         }
  54.                
  55.                 if (p2 != NULL)
  56.                 {
  57.                         free(p2);
  58.                         p2 = NULL;
  59.             }
  60.                
  61. }

  62. void printArray(struct Person persons[], int len)
  63. {
  64.         for (int i = 0; i < len; i++)
  65.         {
  66.                 printf("姓名:%s 年龄:%d \n", persons[i].name, persons[i].age);
  67.         }
  68. }
  69. void test05()
  70. {
  71.         //结构体变量数组 再栈上创建
  72.         struct Person persons[] =
  73.         {
  74.                 {"aaa",10},
  75.                 {"bbb",20},
  76.                 {"ccc",30},
  77.                 {"ddd",40},
  78.         };
  79.         int len = sizeof(persons) / sizeof(struct Person);
  80.         printArray(persons, len);
  81.         //再堆区创建
  82.         struct Person* personArr = malloc(sizeof(struct Person) * 4);
  83.         if (personArr == NULL)
  84.         {
  85.                 printf("内存分配不成功!");
  86.         }
  87.         else
  88.         {
  89.                 for (int i = 0; i < 4; i++)
  90.                 {
  91.                         sprintf(personArr[i].name, "name_ % d", i);
  92.                         personArr[i].age = i + 18;
  93.                 }
  94.         }
  95.        
  96.         printArray(personArr, 4);
  97.         if (personArr != NULL)
  98.         {
  99.                 free(personArr);
  100.                 personArr = NULL;
  101.         }
  102. }
  103. int main(void)
  104. {
  105.         test01();
  106.         test02();
  107.         test03();
  108.         test04();
  109.         test05();
  110.         return EXIT_SUCCESS;
  111. }

  112. [/color][/size]

  113. 程序运行正常  遇到C6011破浪线的加入判断即可[/size]
复制代码

评分

参与人数 2驿站币 +3 热心值 +3 收起 理由
70_avatar_small tony666 + 1 + 1 很给力!
58_avatar_small thzzl + 2 + 2 加油!

查看全部评分





上一篇:MFC ScrollBar滚动条的使用
下一篇:c语言学习之路的点滴记录——文件的字符读和写基本操作
98_avatar_middle
最佳答案
0 
在线会员 发表于 2021-8-23 08:48:35 | 显示全部楼层
认真学学。
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2023-9-29 15:09

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表