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

C語言結構體完整指南:定義、初始化、指標與嵌套應用

     編輯:關於C語言

C語言結構體完整指南:定義、初始化、指標與嵌套應用

結構體類型定義與變量聲明

struct student { int id; char name[10]; };
struct student mike, lily;           // 直接定義變量
struct student mike = {123, "mike"}; // 定義並初始化

student 是自定義類型名,非變量。C++ 中可省略 struct 關鍵字。

成員訪問與修改

mike.id = 20130000 + mike.id;
for (int i=0; mike.name[i]; i++) mike.name[i] = toupper(mike.name[i]);

內存佈局

  • 結構體變量佔用連續內存,大小為所有成員大小之和(含對齊填充)。
  • 含指針成員時,指針本身大小固定(32/64 位),指向的內容另算。

結構體變量賦值

student lily = mike;  // 整體賦值,逐成員拷貝(淺拷貝)

作函數參數與返回值

  • 傳值調用:形參為副本,修改不影響實參;大結構體開銷大。
  • 返回值:同樣拷貝副本。
  • 建議傳指針:void func(student *p)。

指向結構體的指針

student *ps = &mike;
(*ps).id;   // 方式1
ps->id;     // 方式2(推薦)

結構體數組

struct student stu[10] = { {1, "a"}, {2, "b"} };

結構體嵌套

struct Date { int year, month, day; };
struct Student { int age; struct Date birthday; };
struct Student stu = {18, {1996, 9, 9}};

總結

結構體類型特性與基本類型一致:可定義變量、數組、指針、作參數、返回值、賦值、取地址。善用 typedef 簡化聲明。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved