[英]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行對應於push
和push
找到的行),以便可以輕松地重用功能。 第69-72行是這種重用的一個例子。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.