c 專題 結構

2021-10-06 20:18:30 字數 1851 閱讀 7941

一、我們什麼時候建立strucut?什麼時候使用類,參考以下兩點:

1)當c#的預定義型別,比如int ,double等不能滿足我們的需求的時候,比如我們想定義乙個座標,該座標有x,y,z,並且都是double型別,那我們就可以考慮使用struct或者class,但是由於stuct所佔的記憶體比較小時具有效能的優勢,所以定義在小於16位元組的型別時,我們使用struct,大於16位元組時使用class(參考《c#本質論》);這裡還有乙個問題,我們如何知道乙個結構所佔的記憶體有多大呢?這裡使用sizeof

struct angle

public double degrees 

public double minutes

}呼叫:

unsafe

2)結構還可以包含 建構函式、 常量、 字段、 方法、 屬性、 索引器、 運算子、 事件和 巢狀型別,但如果同時需要上述幾種成員,則應當考慮改為使用類作為型別(參考《msdn》)。

struct angle

public

double degrees

public

double minutes

public

double seconds

}

呼叫:

angle angle=

newangle

(100

,200

,300);

angle.degrees =

400;

angle.minutes =

400;

angle.seconds =

100;

2、列舉

當我們為了增加**的可讀性時使用列舉,未使用列舉的**:

int country=0;

switch

(country)

使用後:

列舉的定義:

enum country

列舉的使用:

country  country=country.china ;

switch

(country)

列舉陣列之間的轉換

enum country1

enum country2

country1[

] country=

(country1)

(array)

newcountry2[10

];//必須將乙個列舉先轉換為array型別,再僅從轉換。

列舉和字串之間的轉換

1)列舉轉字串;

filestatus filestatus = filestatus.hidden;

string filestatusstr = filestatus.

tostring()

;

2)字串轉列舉(使用enum.parse來實現轉換)

filestatus newfilestatu;

newfilestatu = enum.

tryparse

(filestatusstr,

out newfilestatu)

? newfilestatu :filestatus.readandwrite ;

將列舉作為位標誌

[

flags

]enum filestatus

資料結構專題

一.並查集 主要操作 1.合併兩個不相交集合 2.判斷兩個元素是否屬於同一集合 時間複雜度 o n n 其中 x 對於x 宇宙中原子數之和,x 不大於4,事實上,路經壓縮後的並查集的複雜度是乙個很小的常數。模板題 include includeusing namespace std for poj ...

Shell 迴圈結構專題

在shell 101中已經介紹了for迴圈結構,本文做乙個迴圈結構體的總結,補充while,until 兩個迴圈體,以及break,continue關鍵字說明。let s get started.1.for 迴圈 shell 中的for迴圈分為c語言風格的經典for迴圈結構,以及類似python中的...

c語言專題

本篇作為乙個引子,領著大家梳理c語言中難點或容易忽視的知識點,知識點以專題形式展開。專題一 結構占用記憶體長度 在linux windows上執行下面一段程式,你能總結出struct記憶體對齊規則嗎?struct ta struct tb struct tc printf size ta d tb ...