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 2018/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 2018/8/29.
//#ifndef CADDMORE_STUDENT_H
#define CADDMORE_STUDENT_H
using 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 2018/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简单。

C++遍历结构体数组并赋值相关推荐

  1. c语言 结构体数组的赋值

    c语言 结构体数组的赋值 //**创建结构体** #include<stdio.h> struct Class{int id;char name[10]; }; //******结构体数组 ...

  2. 关于结构体数组的赋值问题

    最近在练习PAT的题目,有很多字符串数据需要使用二维字符串数组进行存储,处理起来并不是很方便,如果要存储的数据每一行都是规格化的,可以考虑使用一维的结构体数组来处理,以下为一维的结构体数组的使用总结: ...

  3. C++ 结构体指针与结构体数组的赋值

    知识点小结: 当需要批量赋值结构体的时候,可以使用结构体数组.对于结构体指针,可以用来指向结构体数组的首地址,但是不能按照结构体数组的赋值方式进行赋值,感觉是无法预知后面批量赋值的大小.具体情况见以下 ...

  4. c语言如何为结构数组赋值,C语言结构体数组同时赋值的另类用法

    说到C语言结构体数组的同时赋值,许多人一想就会想到用以下的这种方法,咱们来写一个例子: #include struct student { int a; int b ; int c ; }; stru ...

  5. 结构体数组的赋值方法(常用的三种,包含字符串)

    目录 一.按照成员变量进行赋值(麻烦,好理解,字符串赋值需要strcpy) 二.对数组整体进行赋值.(一次性需要把所有的都添加进去,不需要strcpy) (1) 在声明数组的时候,进行赋值 (2)对有 ...

  6. 向结构体或结构体数组中赋值

    一:结构体 方式1 #include<bits/stdc++.h> using namespace std;struct Node{string name;int grade; };int ...

  7. Matlab 结构体数组批量赋值

    老实说,不是很懂,但确实可以用 代码 clear;clc; Cncs=struct('past_time', {1,1,1,1,1,1,1,1}); [Cncs.past_time] A = mat2 ...

  8. C语言结构体数组定义及赋值

    做了一个小的例子: #include <stdio.h> int main() {struct Link{int LinkId;int LinkLen;int NxtLnkId;}Lnk[ ...

  9. 【C++】【一】结构体数组

    demo7:函数份文件编写 swap.h #include <iostream> using namespace std;//函数的声明 void swap(int a, int b); ...

最新文章

  1. python录入数据至ppt_用 Python 让你的 PPT 数据动起来
  2. ExtJs4之常用函数
  3. (005)RN开发 js jsx ts tsx的区别
  4. android与gradle版本,android – Gradle错误:支持的最低Gradle版本...
  5. laravel上传到七牛图片插件
  6. Teamtalk源码分析
  7. winform下的未捕捉的异常处理
  8. python和perl_Python与Perl的DBI是什么等价物?
  9. Java 8中最快的垃圾收集器是什么?
  10. 自加一运算_C语言i++、++i混合运算老手未必全掌握,看了你就明白了
  11. 【转载】linux环境下tcpdump源代码分析
  12. gdb 调试带参数的程序-转
  13. 学python可以从事什么工作-学Python可以找什么工作或者做什么兼职?
  14. js系列教程11-json、ajax(XMLHttpRequest)、comet、SSE、WebSocket全解
  15. 【七】zuul路由网关
  16. 解决在mysql官网下载慢的问题
  17. mysql routines是什么_MySQL入门:Stored Routines 的变数与流程 - Break易站
  18. SSH免密登录(笔记)
  19. ReSharper 使用感受
  20. 快速入门丨篇五:如何进行运动控制器输入/输出IO的应用?

热门文章

  1. 国都证券:3月A股回归震荡格局
  2. 剪映MAC电脑专业版 全能易用的剪辑软件
  3. 纸鸢|物联网云平台的商业模式分析
  4. 张国华:大型空港综合交通枢纽规划设计技术体系研究
  5. 5-1 下一代货币:数字货币
  6. FFMPEG录屏(5)---- 捕获扬声器和麦克风(基于WASAPI)
  7. android 通话的log分析,Android Telephony 接电话流程分析
  8. 三星手机换新卡显示无服务器,玩机“老炮”告诉你三星手机新玩法
  9. C++常用命名法与书写规范
  10. 西安有哪些牛逼的互联网公司?