如何判断数组的某一位对象被填充了

加盾男爵 2020-10-23 03:20:10
假如有一个结构,和一个打印的函数

struct Student{
std::string name;
int age;
};

void printStudent(const Student* students , std::siez_t len){
for(std::size_t i = 0 ; i < len ; ++i){
//如何判断(students+i)不为空
std::cout<<"第"<<i+1<<"个学生";
std::cout<<"姓名"<<(students+i)->name<<"年龄"<<(students+i)->age<<std::endl;
{
}


程序调用printStuden()函数的时候,传入的数组可能是new而没有赋值的,类似下面这样

Student* class1Student = new Student[MAX_COUNT];
printStudent(class1Student,MAX_COUNT);

像这种new出来的结构数组,如何判断结构数组的某个元素有没有被赋值,用(student+i) == nullptr行嘛?
...全文
89 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
源代码大师 2021-05-08
  • 打赏
  • 举报
回复
希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10768339.html
SleekStone 2020-10-23
  • 打赏
  • 举报
回复
可以判断(students+i)->name是否为空,赋值了名字应该不为空吧?最好的做法是给struct Student写个无参的默认构造函数,在构造函数里设置业务上name和age不合法的值,然后你循环里判断这个值是否合法,就知道有没有被填充了。比如age不应该是负数吧?你就构造函数里设置age=-1,循环里判断如果age==-1,那就是不合法的呗,基本就是没填充的,除非你用默认的Student去填充

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧