main.cpp
#include <iostream>using namespace std;#include "student.h"int main() {Student zhangsan = {"张三", 1001, man, 25};Student lisi = {"李四", 1002, wuman, 26};cout << zhangsan.name << "," << zhangsan.age << "," << zhangsan.num << "," << zhangsan.sex<< endl;cout << lisi.name << "," << lisi.age << "," << lisi.num << "," << lisi.sex << endl;interMsg();getMsg();return 0;}
student.cpp
//// Created by Administrator on /8/29.//#include <algorithm>#include <iostream>#include "student.h"#include "utils.cpp"using namespace std;#define random(x) (rand()%x)Student students[100];void interMsg() {size_t size = getArrayLen(students);cout << "size:" << size << endl;//这种循环不能修改stu的num值// for (int i = 0; i <size ; ++i) {// Student item =students[i];// string &basic_string = item.getName();// const char *name = basic_string.c_str();// //cout << "item.name:" << name << endl;// size_t num = random(size);// cout << "item.num:" << num << endl;// item.num = num;// }//使用指针接收 &students[i]即可// for (int i = 0; i <size ; ++i) {// Student *item = &students[i];// size_t num = random(size);// //下面这两种方式一样的// item->num = num;// (*item).num = num;// }//这种最简单//这个item 加上&就是去地址 即指针变量 *item即这个变量本身。for (auto &item : students) {size_t num = random(size);item.sex = man;cout << "item.num:" << num << endl;item.num = num;}}void getMsg() {for (auto item : students) {string &basic_string = item.getName();const char *name = basic_string.c_str();cout << item.name << "," << item.age << "," << item.num << "," << item.sex << endl;}}
student.h
//// Created by Administrator on /8/29.//#ifndef CADDMORE_STUDENT_H#define CADDMORE_STUDENT_Husing namespace std;void interMsg();void getMsg();enum Sex {man = 1,wuman = 0};struct Student {string name;int num;Sex sex;int age;string &getName() {return name;}Sex getSex() const {return sex;}};#endif //CADDMORE_STUDENT_H
utils.cpp
//// Created by Administrator on /8/29.//#include <iostream>using namespace std;template<class T>int getArrayLen(T &array) /*使用模板定义一个函数getArrayLen,该函数将返回数组array的长度*/ {return (sizeof(array) / sizeof(array[0]));}
总结:
1.for (auto &item : students) 中 &item为取指针,方便修改stu的参数。
2.utils.cpp为工具类,getArrayLen为C++通用的获取数组长度方法。
3.#define random(x) (rand()%x) 位宏定义 获取0~x范围内的随机数。
4.Sex枚举类型感觉比java简单。