A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑白世界 中级黑马   /  2015-9-24 01:17  /  637 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

使用结构体是应注意一下问题:
1.声明结构体类型时,系统是不会为其分配内存空间的,只有当定义结构体时才为其分配内存空间。
2.结构体的内存分析:结构体所占内存空间依照“补齐法则”,其所占内存大小,一定是其最大成员类型的倍数,如果不足,则自动补齐。
3.声明结构体结束后,记得在大括号后边添加分号!!!
4.结构体的三种定义方式:
  1. //第一种:先声明结构体类型在定义结构体。
  2. struct person {
  3.     int age;
  4.     char *name;
  5. };
  6. struct person p1;
  7. //第二种:声明结构体类型的同时定义结构体。
  8. struct person {
  9.     int age;
  10.     char *name;
  11. } p1;
  12. //第三种:声明结构体类型的同时定义结构体,但是省略结构体类型名称。
  13. //确定:无法复用
  14. struct {
  15.     int age;
  16.     char *name;
  17. } p1;
复制代码
5.这样初始化结构体是错误的:
  1. struct person {
  2.     int age;
  3.     char *name;
  4. };
  5. struct person p1;
  6. p1 = {22 , "jack"};  //这样初始化是错误的!
复制代码
一下有三种正确的初始化结构体的方法:
  1. //方法一:
  2. struct person {
  3.     int age;
  4.     char *name;
  5. };
  6. struct person p1 = {22,“jack”};
  7. //方法二:
  8. struct person {
  9.     int age;
  10.     char *name;
  11. };
  12. struct person p1;
  13. p1.age = 22;
  14. p1.name = "jack";
  15. //方法三:
  16. struct person {
  17.     int age;
  18.     char *name;
  19. };
  20. struct person p1 = {.name="jack" ,  .age=22}; // 这样赋值就可以不按照结构体定义的顺序赋值了。
复制代码
6.结构体的作用域
  结构体是有作用域的,具体说就是:
  结构体类型只在其类型声明的代码块中有效!




0 个回复

您需要登录后才可以回帖 登录 | 加入黑马