1. 程式人生 > >C++ 資料結構(結構體struct)

C++ 資料結構(結構體struct)

定義結構體:

下面是宣告一個結構體型別 MyBook,變數為 book

//定義結構體
struct MyBook{
 
    char name[20];
    char author[10];
    char abstract[27];
    int number;
} book;
訪問結構體: 為了訪問結構的成員,我們使用成員訪問運算子(.)。成員訪問運算子是結構變數名稱和我們要訪問的結構成員之間的一個句號。
void getStruct(){
 
    MyBook book1;
 
    strcpy(book1.name,"C++從入門到放棄");
    strcpy(book1.author,"張三封");
    strcpy(book1.abstract,"這本書講到為什麼從入門到放棄");
    book1.number = 35432;
 
    cout<<"book1的名字是:"<<book1.name<<endl;
    cout<<"book1的作者是:"<<book1.author<<endl;
    cout<<"book1的摘要是:"<<book1.abstract<<endl;
    cout<<"book1的總字數是:"<<book1.number<<endl;
}

結構作為函式引數: 可以把結構作為函式引數,傳參方式與其他型別的變數或指標類似。您可以使用上面例項中的方式來訪問結構變數:
//以結構體作為引數的函式
void printBook( struct MyBook book )
{
   cout << "書名稱 : " << book.name <<endl;
   cout << "書作者 : " << book.author <<endl;
   cout << "書摘要 : " << book.abstract <<endl;
   cout << "書字數 : " << book.number <<endl;
}
指向結構的指標: 可以定義指向結構的指標,方式與定義指向其他型別變數的指標相似,如下所示: structBooks *struct_pointer; 現在,可以在上述定義的指標變數中儲存結構變數的地址。為了查詢結構變數的地址,請把 & 運算子放在結構名稱的前面,如下所示: struct_pointer = &Book1; 為了使用指向該結構的指標訪問結構的成員,您必須使用 -> 運算子,如下所示: struct_pointer->title;
//指向結構的指標
void printBook1(struct MyBook *book){
 
   cout << "書名稱1 : " << book -> name <<endl;
   cout << "書作者1 : " << book -> author <<endl;
   cout << "書摘要1 : " << book -> abstract <<endl;
   cout << "書字數1 : " << book -> number <<endl;
}

完整程式碼:
//定義結構體
struct MyBook{
 
    char name[20];
    char author[10];
    char abstract[27];
    int number;
} book;
 
void getStruct(){
 
    MyBook book1;
 
    strcpy(book1.name,"C++從入門到放棄");
    strcpy(book1.author,"張三封");
    strcpy(book1.abstract,"這本書講到為什麼從入門到放棄");
    book1.number = 35432;
 
    cout<<"book1的名字是:"<<book1.name<<endl;
    cout<<"book1的作者是:"<<book1.author<<endl;
    cout<<"book1的摘要是:"<<book1.abstract<<endl;
    cout<<"book1的總字數是:"<<book1.number<<endl;
}
//以結構體作為引數的函式
void printBook( struct MyBook book )
{
   cout << "書名稱 : " << book.name <<endl;
   cout << "書作者 : " << book.author <<endl;
   cout << "書摘要 : " << book.abstract <<endl;
   cout << "書字數 : " << book.number <<endl;
}
//指向結構的指標
void printBook1(struct MyBook *book){
 
   cout << "書名稱1 : " << book -> name <<endl;
   cout << "書作者1 : " << book -> author <<endl;
   cout << "書摘要1 : " << book -> abstract <<endl;
   cout << "書字數1 : " << book -> number <<endl;
}
 
int main(){
 
    MyBook book1;
    strcpy(book1.name,"C++從入門到放棄");
    strcpy(book1.author,"張三封");
    strcpy(book1.abstract,"這本書講到為什麼從入門到放棄");
    book1.number = 35432;
 
    printBook(book1);
 
    printBook1(&book1);
}

執行效果: