我有几个问题。理解这段代码我有点困难。到底是做什么的?
例如:
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
}
答案 0 :(得分:3)
typedef struct dynArrStruct
做了什么,为什么它最后有dynArr
?
typedef
为类型创建别名以节省您的输入,或提高可读性。在这种特殊情况下,它会为dynArr
创建一个名为struct dynArrStruct
的别名。
没有typedef
,即只有这个
struct dynArrStruct
{
double *location;
int length;
int currSize;
};
每次需要声明struct dynArrStruct
类型的变量时,您将被迫写struct
。如果有typedef
,您只需编写dynArr
,编译器就会将其解释为struct dynArrStruct
。
答案 1 :(得分:2)
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!
答案 2 :(得分:0)
除了dasblinkenlight的回答,
Why are there 2 struct variables (a1/a2)?
所呈现的代码似乎是代码模块化程度较低的代码(a1)和模块化代码(a2)的一个例子。对a1
所做的修改与对a2
所做的修改非常相似。但是,对a2
所做的修改被抽象为函数(第53-55行对应于init
中的行,57-58对应于push
和{{中的行。 1}}),以便可以轻松地重用该功能。这种重用的一个例子是第69-72行。