赞
踩
通俗来讲,就是打包封装一些有共同特征的不同数据的变量封装在内部,通过一定方法访问修改内部变量。可以说,结构体是让一些很散的数据变得很整(即井然有序)。
语法:struct 结构体名 { 结构体成员列表 };
- #include "iostream"
- using namespace std;
-
- //结构体变量创建方式3:定义结构体时顺便创建变量
- struct student
- {
- //成员列表
- char name[10];
- int age;
- int score;
- }stu3
-
-
- int main(){
-
- //结构体变量创建方式1: struct 结构体名 变量名
- struct student stu1;
-
- stu1.name = "七喜";
- stu1.age = 20;
- stu1。score = 95;
- cout<<"姓名:"<<stu1.name <<" 年龄:"<<stu1.age <<" 分数:"<<stu1.score <<endl;
-
-
- //创建结构体变量方式2:
- struct student sut2 = {"可乐",19,100};
- cout<< "姓名:"<<stu2.name<<" 年龄:"<<stu2.age<<" 分数:"<<stu2.score<< endl;
-
-
- //方式3
- stu3.name = "雪碧";
- stu3.age = 20;
- stu3.score = 90;
- cout<<"姓名:"<<stu3.name <<" 年龄:"<<stu3.age<<" 分数:"<<stu3.score<< endl;
-
-
- system('pause');
-
- return 0;
- }
其中,system('pause')在C中就是从程序里调用“pause”命令,类似:“Press any key to exit”等待用户按下任意键继续的意思;在C++中,作用于防止窗口消失,即暂停黑窗口,注意不要在return语句之后加system(“pause”),那样执行不了!
作用:将自定义的结构体放入到数组中方便维护
语法: struct 结构体名 数组名[元素个数] = { { } , { } ,...., { } }
. 和->d 区别:
. 来访问结构体成员/属性
-> 来访问其指向的结构体成员/属性
- #include "iostream"
- using namespace std;
-
- //学生结构体定义
- struct student
- {
- //成员列表
- string name; //姓名
- int age; //年龄
- int score; //分数
- };
-
- //教师结构体定义
- struct teacher
- {
- //成员列表
- int id; //职工编号
- string name; //教师姓名
- int age; //教师年龄
- struct student stu; //子结构体 学生
- };
-
-
- int main() {
-
- struct teacher t1;
- t1.id = 10000;
- t1.name = "老王";
- t1.age = 40;
-
- t1.stu.name = "张三";
- t1.stu.age = 18;
- t1.stu.score = 100;
-
- cout << " 教师 职工编号: " << t1.id <<
- " 姓名: " << t1.name <<
- " 年龄: " << t1.age << endl;
-
- cout << " 辅导学员 姓名: " << t1.stu.name <<
- " 年龄:" << t1.stu.age <<
- " 考试分数: " << t1.stu.score << endl;
-
- system("pause");
-
- return 0;
- }
传递方式包括:值传递、地址传递
- #include "iostream"
- using namespace std;
-
- //学生结构体定义
- struct student
- {
- //成员列表
- string name; //姓名
- int age; //年龄
- int score; //分数
- };
-
- //值传递
- void printStudent(student stu )
- {
- stu.age = 28;
- cout << "子函数中 姓名:" << stu.name <<
- " 年龄: " << stu.age <<
- " 分数:" << stu.score << endl;
- }
-
- //地址传递
- void printStudent2(student *stu)
- {
- stu->age = 28;
- cout << "子函数中 姓名:" << stu->name <<
- " 年龄: " << stu->age <<
- " 分数:" << stu->score << endl;
- }
-
- int main() {
-
- student stu = { "张三",18,100};
- //值传递
- printStudent(stu);
- cout << "主函数中 姓名:" << stu.name <<
- " 年龄: " << stu.age <<
- " 分数:" << stu.score << endl;
-
- cout << endl;
-
- //地址传递
- printStudent2(&stu);
- cout << "主函数中 姓名:" << stu.name <<
- " 年龄: " << stu.age <<
- " 分数:" << stu.score << endl;
-
- system("pause");
-
- return 0;
- }
注:如果不想修改主函数中的数据,用值传递,反之用地址传递。
可以用关键字const定义指针stu,修饰列表成员属性,保证修饰的属性的值(左定值,右定向)不被改变,防止函数体中的误操作。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。