文章鏈接:
結構體定義:
1 struct Books 2 { 3 char title[50]; 4 char author[50]; 5 char subject[100]; 6 int book_id; 7 } book;
訪問結構體成員:
1 #include <iostream> 2 #include <cstring> 3 4 using namespace std; 5 6 // 聲明一個結構體類型 Books 7 struct Books 8 { 9 char title[50]; 10 char author[50]; 11 char subject[100]; 12 int book_id; 13 }; 14 15 int main( ) 16 { 17 Books Book1; // 定義結構體類型 Books 的變量 Book1 18 Books Book2; // 定義結構體類型 Books 的變量 Book2 19 20 // Book1 詳述 21 strcpy( Book1.title, "C++ 教程"); 22 strcpy( Book1.author, "Runoob"); 23 strcpy( Book1.subject, "編程語言"); 24 Book1.book_id = 12345; 25 26 // Book2 詳述 27 strcpy( Book2.title, "CSS 教程"); 28 strcpy( Book2.author, "Runoob"); 29 strcpy( Book2.subject, "前端技術"); 30 Book2.book_id = 12346; 31 32 // 輸出 Book1 信息 33 cout << "第一本書標題 : " << Book1.title <<endl; 34 cout << "第一本書作者 : " << Book1.author <<endl; 35 cout << "第一本書類目 : " << Book1.subject <<endl; 36 cout << "第一本書 ID : " << Book1.book_id <<endl; 37 38 // 輸出 Book2 信息 39 cout << "第二本書標題 : " << Book2.title <<endl; 40 cout << "第二本書作者 : " << Book2.author <<endl; 41 cout << "第二本書類目 : " << Book2.subject <<endl; 42 cout << "第二本書 ID : " << Book2.book_id <<endl; 43 44 return 0; 45 }
結構作為函數參數:
1 #include <iostream> 2 #include <cstring> 3 4 using namespace std; 5 void printBook( struct Books book ); 6 7 // 聲明一個結構體類型 Books 8 struct Books 9 { 10 char title[50]; 11 char author[50]; 12 char subject[100]; 13 int book_id; 14 }; 15 16 int main( ) 17 { 18 Books Book1; // 定義結構體類型 Books 的變量 Book1 19 Books Book2; // 定義結構體類型 Books 的變量 Book2 20 21 // Book1 詳述 22 strcpy( Book1.title, "C++ 教程"); 23 strcpy( Book1.author, "Runoob"); 24 strcpy( Book1.subject, "編程語言"); 25 Book1.book_id = 12345; 26 27 // Book2 詳述 28 strcpy( Book2.title, "CSS 教程"); 29 strcpy( Book2.author, "Runoob"); 30 strcpy( Book2.subject, "前端技術"); 31 Book2.book_id = 12346; 32 33 // 輸出 Book1 信息 34 printBook( Book1 ); 35 36 // 輸出 Book2 信息 37 printBook( Book2 ); 38 39 return 0; 40 } 41 void printBook( struct Books book ) 42 { 43 cout << "書標題 : " << book.title <<endl; 44 cout << "書作者 : " << book.author <<endl; 45 cout << "書類目 : " << book.subject <<endl; 46 cout << "書 ID : " << book.book_id <<endl; 47 }
結構體指針:
您可以定義指向結構的指針,方式與定義指向其他類型變量的指針相似,如下所示:
struct Books *struct_pointer;
現在,您可以在上述定義的指針變量中存儲結構變量的地址。為了查找結構變量的地址,請把 & 運算符放在結構名稱的前面,如下所示:
struct_pointer = &Book1;
為了使用指向該結構的指針訪問結構的成員,您必須使用 -> 運算符,如下所示:
struct_pointer->title;
例子:
1 #include <iostream> 2 #include <cstring> 3 4 using namespace std; 5 void printBook( struct Books *book ); 6 7 struct Books 8 { 9 char title[50]; 10 char author[50]; 11 char subject[100]; 12 int book_id; 13 }; 14 15 int main( ) 16 { 17 Books Book1; // 定義結構體類型 Books 的變量 Book1 18 Books Book2; // 定義結構體類型 Books 的變量 Book2 19 20 // Book1 詳述 21 strcpy( Book1.title, "C++ 教程"); 22 strcpy( Book1.author, "Runoob"); 23 strcpy( Book1.subject, "編程語言"); 24 Book1.book_id = 12345; 25 26 // Book2 詳述 27 strcpy( Book2.title, "CSS 教程"); 28 strcpy( Book2.author, "Runoob"); 29 strcpy( Book2.subject, "前端技術"); 30 Book2.book_id = 12346; 31 32 // 通過傳 Book1 的地址來輸出 Book1 信息 33 printBook( &Book1 ); 34 35 // 通過傳 Book2 的地址來輸出 Book2 信息 36 printBook( &Book2 ); 37 38 return 0; 39 } 40 // 該函數以結構指針作為參數 41 void printBook( struct Books *book ) 42 { 43 cout << "書標題 : " << book->title <<endl; 44 cout << "書作者 : " << book->author <<endl; 45 cout << "書類目 : " << book->subject <<endl; 46 cout << "書 ID : " << book->book_id <<endl; 47 }
關於typedef的使用和c語言中差不多。但是C與C++結構體中前者不能有函數,后者可以有。
類與結構體在 C++ 中只有兩點區別,除此這外無任何區別。
- (1)class 中默認的成員訪問權限是 private 的,而 struct 中則是 public 的。
- (2)從 class 繼承默認是 private 繼承,而從 struct 繼承默認是 public 繼承。
- (3)class 可以定義模板,而 struct 不可以。
