假如有一個結構,和一個列印的函式
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行嘛?
uj5u.com熱心網友回復:
可以判斷(students+i)->name是否為空,賦值了名字應該不為空吧?最好的做法是給struct Student寫個無參的默認建構式,在建構式里設定業務上name和age不合法的值,然后你回圈里判斷這個值是否合法,就知道有沒有被填充了。比如age不應該是負數吧?你就建構式里設定age=-1,回圈里判斷如果age==-1,那就是不合法的唄,基本就是沒填充的,除非你用默認的Student去填充轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/188302.html
標籤:C++ 語言
上一篇:大廠面試系列(二):并發編程
