簡體   English   中英

動態數組堆棧結構C

[英]Dynamic array stack struct C

我有一些問題。 我在理解此代碼方面有些困難。 它到底在做什么?

例如:

typedef struct dynArrStruct做什么,為什么它的末尾有dynArr? 我知道typedef的定義是“允許為已知的數據類型創建別名”,但這對我來說是行話。 有人可以用外行人的話來表達嗎? 謝謝!

為什么會有2個結構變量(a1 / a2)?

鏈接到完整代碼(如果需要):

http://www.cs.uic.edu/pub/CS211/CS211LectureNotesS13/dynArr.c

typedef struct dynArrStruct
{
    double *location;
    int length;
    int currSize;
} dynArr;

int main (int argc, char**argv)
{
    struct dynArrStruct a1;
    dynArr a2;
    int i;

    //rest of code
}

typedef struct dynArrStruct做什么,為什么它的末尾有dynArr

typedef為類型創建別名,以節省您的鍵入時間或提高可讀性。 在這種特殊情況下,它將為struct dynArrStruct創建一個名為dynArr的別名。

沒有typedef ,即只有這個

struct dynArrStruct
{
    double *location;
    int length;
    int currSize;
};

每當您需要聲明該struct類型的變量時,您將被迫編寫struct dynArrStruct 使用typedef時,您可以簡單地編寫dynArr ,編譯器將為您解釋為struct dynArrStruct

typedef struct dynArrStruct
{
    double *location;
    int length;
    int currSize;
} dynArr;

是兩個不同代碼段的縮寫。

// define a struct by name dynArrStruct
struct dynArrStruct
{
    double *location;
    int length;
    int currSize;
}; 

//Example of use
struct dynArrStruct d1;

// define an alias to "struct dynArrStruct" called dynArr
typedef struct dynArrStruct dynArr; 


//Example of use
dynArr d2; //whoa so short!

除了dasblinkenlight的答案之外,

Why are there 2 struct variables (a1/a2)?

呈現的代碼似乎是模塊化程度較低的代碼(a1)和模塊化程度良好的代碼(a2)的示例。 a1的修改與對a2的修改非常相似。 但是,對a2所做的修改被抽象為函數(第53-55行對應於init找到的行,第57-58行對應於pushpush找到的行),以便可以輕松地重用功能。 第69-72行是這種重用的一個例子。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM