C语言结构体类型
在教学中,老师说:结构体类型不能递归调用,比如structstudent{intnum;structstudentkobe;}这种是不允许的但在数据结构学科中,线性表的单...
在教学中,老师说:结构体类型不能递归调用,比如 struct student{
int num;
struct student kobe;
}这种是不允许的
但在数据结构学科中,线性表的单链表的结构定义为
typedef struct Lnode{
ElemType data;
struct Lnode *next;
}Lnode , *linklist;
请在行的人解释下为什么? 展开
int num;
struct student kobe;
}这种是不允许的
但在数据结构学科中,线性表的单链表的结构定义为
typedef struct Lnode{
ElemType data;
struct Lnode *next;
}Lnode , *linklist;
请在行的人解释下为什么? 展开
展开全部
在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。
在C语言中,定义一个结构的一般形式为:
struct结构名
{
//成员表列
};
成员表由若干个成员组成, 每个成员都是该结构的一个组成部分。对每个成员也必须作类型说明,其形式为:“类型说明符 成员名;”。成员名的命名应符合标识符的书写规定。例如:
struct stu
{
int num;
char name[20];
char sex;
float score;
};
在这个结构定义中,结构名为stu,该结构由4个成员组成。 第一个成员为num,整型变量;第二个成员为name,字符型数组;第三个成员为sex,字符型变量;第四个成员为score,浮点型变量。 应注意在括号后的分号是必不可少的。
然后,当结构定义完成后,即创建了一种数据类型,可以像int、float等内置类型一样使用,以上面定义的stu结构体来和int类型对比着看。
int a;//定义一个int类型的变量a
stu a; //定义一个stu类型的变量a
int *p; //定义一个int类型的指针p
stu *p; //定义一个stu类型的指针p
int a[10];//定义一个int类型的数组a,它有10个元素,每个元素是int类型
stu a[10];//定义一个stu类型的数组a,它有10个元素,每个元素是stu类型。
2013-12-15
展开全部
递归是调用自身,数据结构里的链表定义里边是结构体指针,而非结构体自身,不是递归调用。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-12-15
展开全部
线性表单链表并没有递归调用啊,他是用指针指向下一个链表struct Lnode *next;
你去在理解下递归思想。
你去在理解下递归思想。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-12-15
展开全部
呵呵,前面的都没说到问题的本质.
建议你先去了解下什么是指针,什么是指针变量.
因为指针变量是存放指针的,并没有被分配所指向数据类型的内存.
从你第一个结构体类型来看是错的,因为struct student kobe; 这样是申请一个结构体变量,这样就分配内存了,这里请理解普通变量和指针变量的区别!接着这样造成的后果是会无休止申请结构体变量->分配内存->申请结构体变量->分配内存....
但是指针变量就不同,只占4个字节而已.并非真正意义上的结构体变量,因为它所占有的内存并非是结构体大小的内存.
这都需要自己去多写程序,多理解,说不明白的,只能自己悟.
建议你先去了解下什么是指针,什么是指针变量.
因为指针变量是存放指针的,并没有被分配所指向数据类型的内存.
从你第一个结构体类型来看是错的,因为struct student kobe; 这样是申请一个结构体变量,这样就分配内存了,这里请理解普通变量和指针变量的区别!接着这样造成的后果是会无休止申请结构体变量->分配内存->申请结构体变量->分配内存....
但是指针变量就不同,只占4个字节而已.并非真正意义上的结构体变量,因为它所占有的内存并非是结构体大小的内存.
这都需要自己去多写程序,多理解,说不明白的,只能自己悟.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询