首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

C++ 結構體詳解:定義、存取、函數參數與指標應用

     編輯:C++ 入門

C++ 結構體詳解:定義、存取、函數參數與指標應用

C/C++ 陣列只能儲存相同型別資料,而 結構體 是使用者自訂的資料型別,允許儲存不同型別的資料項,常用來表示一筆記錄(如書籍資訊:書名、作者、主題、ID)。

結構體定義語法

使用 struct 關鍵字,格式如下:

struct [structure_tag] {
    member_definition;
    ...
} [structure_variables];

structure_tag 為可選標籤,成員定義為標準變數宣告。範例定義 Books 結構:

struct Books {
    char title[50];
    char author[50];
    char subject[100];
    int book_id;
} book;  // 可選:直接宣告變數

存取結構體成員

使用 成員存取運算子 (.):

struct Books Book1, Book2;
strcpy(Book1.title, "Learn C++ Programming");
Book1.book_id = 6495407;
cout << Book1.title << endl;

完整範例:書籍資訊管理

#include <iostream>
#include <cstring>
using namespace std;

struct Books {
    char title[50];
    char author[50];
    char subject[100];
    int book_id;
};

int main() {
    struct Books Book1, Book2;

    // Book1 資料
    strcpy(Book1.title, "Learn C++ Programming");
    strcpy(Book1.author, "Chand Miyan");
    strcpy(Book1.subject, "C++ Programming");
    Book1.book_id = 6495407;

    // Book2 資料
    strcpy(Book2.title, "Telecom Billing");
    strcpy(Book2.author, "Yakit Singha");
    strcpy(Book2.subject, "Telecom");
    Book2.book_id = 6495700;

    // 輸出
    cout << "Book 1 title : " << Book1.title << endl;
    cout << "Book 1 author : " << Book1.author << endl;
    // ... 其餘欄位略
    return 0;
}

結構體作為函數參數

傳遞方式與一般變數相同,可傳值或傳址。傳值範例:

void printBook(struct Books book) {
    cout << "Book title : " << book.title << endl;
    // ...
}
int main() {
    printBook(Book1);  // 傳值:複製整個結構體
}

指向結構體的指標

宣告指標、取址、透過 箭頭運算子 (->) 存取成員:

struct Books *ptr = &Book1;
cout << ptr->title;  // 等同於 (*ptr).title

修改 printBook 接受指標參數可避免複製大型結構體:

void printBook(struct Books *book) {
    cout << book->title << endl;
}
printBook(&Book1);  // 傳遞位址

typedef 簡化宣告

為結構體建立別名,省去 struct 關鍵字:

typedef struct {
    char title[50];
    char author[50];
    char subject[100];
    int book_id;
} Books;

Books Book1, Book2;  // 直接使用 Books 型別

typedef 亦可用於非結構型別,如 typedef long int *pint32; 定義長整數指標型別。

總結

  • 結構體聚合異質資料,是資料組織基石。
  • 成員存取用 .,指標存取用 ->。
  • 大型結構體傳遞給函數建議用指標或參考,避免複製開銷。
  • typedef 提升程式碼可讀性與可維護性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved