C++遍历结构体数组并赋值
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++遍历结构体数组并赋值相关推荐
- c语言 结构体数组的赋值
c语言 结构体数组的赋值 //**创建结构体** #include<stdio.h> struct Class{int id;char name[10]; }; //******结构体数组 ...
- 关于结构体数组的赋值问题
最近在练习PAT的题目,有很多字符串数据需要使用二维字符串数组进行存储,处理起来并不是很方便,如果要存储的数据每一行都是规格化的,可以考虑使用一维的结构体数组来处理,以下为一维的结构体数组的使用总结: ...
- C++ 结构体指针与结构体数组的赋值
知识点小结: 当需要批量赋值结构体的时候,可以使用结构体数组.对于结构体指针,可以用来指向结构体数组的首地址,但是不能按照结构体数组的赋值方式进行赋值,感觉是无法预知后面批量赋值的大小.具体情况见以下 ...
- c语言如何为结构数组赋值,C语言结构体数组同时赋值的另类用法
说到C语言结构体数组的同时赋值,许多人一想就会想到用以下的这种方法,咱们来写一个例子: #include struct student { int a; int b ; int c ; }; stru ...
- 结构体数组的赋值方法(常用的三种,包含字符串)
目录 一.按照成员变量进行赋值(麻烦,好理解,字符串赋值需要strcpy) 二.对数组整体进行赋值.(一次性需要把所有的都添加进去,不需要strcpy) (1) 在声明数组的时候,进行赋值 (2)对有 ...
- 向结构体或结构体数组中赋值
一:结构体 方式1 #include<bits/stdc++.h> using namespace std;struct Node{string name;int grade; };int ...
- Matlab 结构体数组批量赋值
老实说,不是很懂,但确实可以用 代码 clear;clc; Cncs=struct('past_time', {1,1,1,1,1,1,1,1}); [Cncs.past_time] A = mat2 ...
- C语言结构体数组定义及赋值
做了一个小的例子: #include <stdio.h> int main() {struct Link{int LinkId;int LinkLen;int NxtLnkId;}Lnk[ ...
- 【C++】【一】结构体数组
demo7:函数份文件编写 swap.h #include <iostream> using namespace std;//函数的声明 void swap(int a, int b); ...
最新文章
- python录入数据至ppt_用 Python 让你的 PPT 数据动起来
- ExtJs4之常用函数
- (005)RN开发 js jsx ts tsx的区别
- android与gradle版本,android – Gradle错误:支持的最低Gradle版本...
- laravel上传到七牛图片插件
- Teamtalk源码分析
- winform下的未捕捉的异常处理
- python和perl_Python与Perl的DBI是什么等价物?
- Java 8中最快的垃圾收集器是什么?
- 自加一运算_C语言i++、++i混合运算老手未必全掌握,看了你就明白了
- 【转载】linux环境下tcpdump源代码分析
- gdb 调试带参数的程序-转
- 学python可以从事什么工作-学Python可以找什么工作或者做什么兼职?
- js系列教程11-json、ajax(XMLHttpRequest)、comet、SSE、WebSocket全解
- 【七】zuul路由网关
- 解决在mysql官网下载慢的问题
- mysql routines是什么_MySQL入门:Stored Routines 的变数与流程 - Break易站
- SSH免密登录(笔记)
- ReSharper 使用感受
- 快速入门丨篇五:如何进行运动控制器输入/输出IO的应用?