C 學習筆記 結構體 關鍵字 struct

2021-09-12 13:19:57 字數 1910 閱讀 8383

結構體是乙個由程式設計師定義的資料型別,可以容納許多不同的資料值。在過去,物件導向程式設計的應用尚未普及之前,程式設計師通常使用這些從邏輯上連線在一起的資料組合到乙個單元中。一旦結構體型別被宣告並且其資料成員被標識,即可建立該型別的多個變數,就像可以為同乙個類建立多個物件一樣。

一、宣告結構體

宣告結構體的方式和宣告類的方式大致相同,其區別如下:

使用關鍵字 struct 而不是關鍵字 class。

儘管結構體可以包含成員函式,但它們很少這樣做。所以,通常情況下結構體宣告只會宣告成員變數。

結構體宣告通常不包括 public 或 private 的訪問修飾符。

類成員預設情況是私有的,而結構體的成員則預設為 public。程式設計師通常希望它們保持公開,只需使用預設值即可。

以下是乙個結構體宣告的示例,該結構體將 5 個變數繫結在一起,儲存了員工的工資單資料。這個特殊結構體的名稱是 payroll。請注意,它以大寫字母開頭,這和類名使用大寫字母開頭的約定一樣。另外還要注意,與類宣告一樣,在結構體宣告的大括號後面必須有乙個分號。

struct payroll

;

簡寫版:

struct payroll

;

結構體宣告不會建立任何結構體的例項。本示例中的結構體宣告只是告訴編譯器payroll結構體看起來的樣子。它本質上是建立乙個名為 payroll 的新資料型別。

#include "stdafx.h"

#include

#include

using namespace std;

//結構體:使用者自定義的資料型別,類似

struct sperson

//----------------------- 建構函式過載 ----------------------

//引數不一樣,名字可以一樣

//需要主動呼叫,如果沒有主動呼叫則執行預設建構函式

//過載建構函式

//如果過載了建構函式,預設建構函式不要去省略

sperson

(int ninage)

//----------------------- 建構函式過載 ----------------------

//********************=== 建構函式 *************************=

//********************=== 屬性 ******************************

//結構體中封裝的變數稱之為【成員變數】(成員變數可以稱之為屬性)

char szname[32]

;//姓名

int nage;

//年齡

char sz***[4]

;//性別

//********************=== 屬性 ******************************

//********************=== 方法 ******************************

//成員函式(行為)(成員函式稱之為方法)

void

walk()

//走路

void

eat(

)//吃飯

//********************=== 方法 ******************************};

//呼叫了過載建構函式 sperson(11)乙個引數

sperson person =

sperson(11

);//結構體物件

sperson g_person;

int _tmain

(int argc, _tchar* ar**)

結構體,關鍵字

一.關鍵字 static 修飾全域性靜態變數 作用範圍侷限於它的原始檔,即只有本檔案內的 才可以訪問它,變數名在其他檔案內不可見。修飾區域性靜態變數 侷限於特定函式,但出作用域並不釋放,在函式體內的靜態變數的值也能夠維持。修飾靜態函式 作用範圍僅限於它的原始檔,即只有本檔案內才能夠呼叫,函式名在其他...

結構體 struct關鍵字

多個資料組合在一起便是結構體,此時需要用到我們的關鍵字 struct 格式為 struct 需要定義的東西 如此時我們需要定義乙個學生的資訊 struct student 此時student這個資訊結構體我們就已經定義好了,如果定義的結構體中有多個資料,可以考慮定義巨集變數,便於修改維護 接著進行初...

typedef關鍵字與結構體,結構體指標

請移步原文 一 使用typedef定義結構體 typedef用來定義新的資料型別,通常typedef與結構體的定義配合使用。使用typedef的目的使結構體的表達更加簡練 所以說typedef語句並不是必須使用的 定義乙個名字為treenode的結構體型別 現在並沒有定義結構體變數,並不占用記憶體空...