当前位置:   article > 正文

结构体struct的定义和用法_结构体struct的用途

结构体struct的用途

结构体(struct)

通俗来讲,就是打包封装一些有共同特征的不同数据的变量封装在内部,通过一定方法访问修改内部变量。可以说,结构体是让一些很散的数据变得很整(即井然有序)。

结构体的定义和使用

语法:struct 结构体名 { 结构体成员列表 }; 

  • struct 结构体名 变量名
  • struct 结构体名 变量名 = { 成员1值 , 成员2值…}
  • 定义结构体时创建变量
  1. #include "iostream"
  2. using namespace std;
  3. //结构体变量创建方式3:定义结构体时顺便创建变量
  4. struct student
  5. {
  6. //成员列表
  7. char name[10];
  8. int age;
  9. int score;
  10. }stu3
  11. int main(){
  12. //结构体变量创建方式1: struct 结构体名 变量名
  13. struct student stu1;
  14. stu1.name = "七喜";
  15. stu1.age = 20;
  16. stu1。score = 95;
  17. cout<<"姓名:"<<stu1.name <<" 年龄:"<<stu1.age <<" 分数:"<<stu1.score <<endl;
  18. //创建结构体变量方式2:
  19. struct student sut2 = {"可乐",19,100};
  20. cout<< "姓名:"<<stu2.name<<" 年龄:"<<stu2.age<<" 分数:"<<stu2.score<< endl;
  21. //方式3
  22. stu3.name = "雪碧"
  23. stu3.age = 20;
  24. stu3.score = 90;
  25. cout<<"姓名:"<<stu3.name <<" 年龄:"<<stu3.age<<" 分数:"<<stu3.score<< endl;
  26. system('pause');
  27. return 0;
  28. }

其中,system('pause')在C中就是从程序里调用“pause”命令,类似:“Press any key to exit”等待用户按下任意键继续的意思;在C++中,作用于防止窗口消失,即暂停黑窗口,注意不要在return语句之后加system(“pause”),那样执行不了!

结构体数组

作用:将自定义的结构体放入到数组中方便维护

 语法: struct  结构体名  数组名[元素个数] = {  { } ,  { } ,...., { }  }

结构体指针

. 和->d 区别:

.  来访问结构体成员/属性

-> 来访问其指向的结构体成员/属性

结构体嵌套

  1. #include "iostream"
  2. using namespace std;
  3. //学生结构体定义
  4. struct student
  5. {
  6. //成员列表
  7. string name; //姓名
  8. int age; //年龄
  9. int score; //分数
  10. };
  11. //教师结构体定义
  12. struct teacher
  13. {
  14. //成员列表
  15. int id; //职工编号
  16. string name; //教师姓名
  17. int age; //教师年龄
  18. struct student stu; //子结构体 学生
  19. };
  20. int main() {
  21. struct teacher t1;
  22. t1.id = 10000;
  23. t1.name = "老王";
  24. t1.age = 40;
  25. t1.stu.name = "张三";
  26. t1.stu.age = 18;
  27. t1.stu.score = 100;
  28. cout << " 教师 职工编号: " << t1.id <<
  29. " 姓名: " << t1.name <<
  30. " 年龄: " << t1.age << endl;
  31. cout << " 辅导学员 姓名: " << t1.stu.name <<
  32. " 年龄:" << t1.stu.age <<
  33. " 考试分数: " << t1.stu.score << endl;
  34. system("pause");
  35. return 0;
  36. }

结构体做函数参数

传递方式包括:值传递、地址传递

  1. #include "iostream"
  2. using namespace std;
  3. //学生结构体定义
  4. struct student
  5. {
  6. //成员列表
  7. string name; //姓名
  8. int age; //年龄
  9. int score; //分数
  10. };
  11. //值传递
  12. void printStudent(student stu )
  13. {
  14. stu.age = 28;
  15. cout << "子函数中 姓名:" << stu.name <<
  16. " 年龄: " << stu.age <<
  17. " 分数:" << stu.score << endl;
  18. }
  19. //地址传递
  20. void printStudent2(student *stu)
  21. {
  22. stu->age = 28;
  23. cout << "子函数中 姓名:" << stu->name <<
  24. " 年龄: " << stu->age <<
  25. " 分数:" << stu->score << endl;
  26. }
  27. int main() {
  28. student stu = { "张三",18,100};
  29. //值传递
  30. printStudent(stu);
  31. cout << "主函数中 姓名:" << stu.name <<
  32. " 年龄: " << stu.age <<
  33. " 分数:" << stu.score << endl;
  34. cout << endl;
  35. //地址传递
  36. printStudent2(&stu);
  37. cout << "主函数中 姓名:" << stu.name <<
  38. " 年龄: " << stu.age <<
  39. " 分数:" << stu.score << endl;
  40. system("pause");
  41. return 0;
  42. }

注:如果不想修改主函数中的数据,用值传递,反之用地址传递。

可以用关键字const定义指针stu,修饰列表成员属性,保证修饰的属性的值(左定值,右定向)不被改变,防止函数体中的误操作。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/143067?site
推荐阅读
相关标签
  

闽ICP备14008679号