c语言结构体的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言结构体的问题相关的知识,希望对你有一定的参考价值。
struct student
int age;int num;
;
struct student stu[3]=1001,20,1002,19,1003,21;
struct student *p;
p=stu;
则下面表达式中的值为1002的是()
A.(p++)->num
B.(++p)->age
C.(* p).num
D.(*p++).age
能不能讲一下过程。。还有在这题中++在p前面和在后面的区别。。
第一题中的num为什么该值:()
注意了,压根没有使用f的返回值,f也没有返回值(void)
第二题(不再画图了),main中的s[0]与f中的p压根是两个内存区域(当然了,传参数时,将s[0]内存区域的内容拷贝到了p内存区域),所以显然,在f中修改内存区域p,自然不会影响main中的内存区域s[0],因此s[0]亦然保持本来的值。(即20041, 703) 参考技术A 加号在变量前表示先加再取值,在后面表示先取值再做运算
C语言结构体定义
typedef struct student
int num;
struct student *next;
student;
struct student
int num;
struct student *next;
;
这两种定义有什么区别?谢谢
C语言结构体定义:struct为结构体关键字,tag为结构体的标志,member-list为结构体成员列表,其必须列出其所有成员;variable-list为此结构体声明的变量。
结构体是C语言中聚合数据类型(aggregatedatatype)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。
扩展资料
1、struct是声明结构体类型时必须使用的关键字,不能省略。“结构体”这个词是根据英文单词structure译出的。
2、structSTUDENT是定义的数据类型的名字,它向编译系统声明这是一个“结构体类型”,包括name、num、sex、age、score、addr等不同类型的项。
3、structSTUDENT与系统提供的int、char、float、double等标准类型名一样,都是数据类型,具有同样的作用,都是用来定义变量的。
参考资料来源:百度百科—结构体
参考技术Astruct在C语言中是一个关键字,用于定义结构数据类型。
问题中的两种定义的区别在于第一种是给student数据类型,重新定义了一个类型别名,而第二种则单纯的表示一种叫做student的数据结构类型。两者的主要区别在于后面直接定义变量时。如下代码,则可以直接在结构体后面定义一个zhang_san的结构体变量。
struct studentint num;
struct student *next;
zhang_san;
而第一种的定义,则会出现错误。
typedef struct studentint num;
struct student *next;
student zhang_san;
扩展:
“结构”是一种构造数据类型,现在一般叫做用户自定义数据类型,它是由若干“成员”组成的。 每一个成员可以是一个基本数据类型或者又是一个构造类型。 结构即是一种“构造”而成的数据类型, 那么在说明和使用之前必须先定义它,也就是构造它。如同在说明和调用函数之前要先定义一样。
定义一个结构的一般形式为:
struct结构名//成员表列
;
成员表由若干个成员组成, 每个成员都是该结构的一个组成部分。对每个成员也必须作类型说明,其形式为:“类型说明符 成员名;”。成员名的命名应符合标识符的书写规定。例如:
struct stuint num;
char name[20];
char sex;
float score;
;
在这个结构定义中,结构名为stu,该结构由4个成员组成。 第一个成员为num,整型变量;第二个成员为name,字符型数组;第三个成员为sex,字符型变量;第四个成员为score,浮点型变量。 应注意在括号后的分号是必不可少的。
参考技术B 第二个struct student是定义了一个student结构体,这个明白吧。第一个是用typedef把struct student这个结构体类型名字重新定义为student,也就是说struct student和student表示同一个事物,都是一个类型的标识符,比如 typedef int zhengshu; 就是你把整型int重命名为zhengshu,下面定义:int i; 和 zhengshu i; 两句就是等价的了本回答被提问者采纳 参考技术C 【C语言结构体】定义是结构体是一种构造数据类型(也称复杂数据类型),由若干不同类型的变量(数据)组成。每个变量都是结构体的成员(member),每个成员可以是基本数据类型,也可以是构造类型。
1、结构变量的使用
结构是一个新的数据类型, 因此结构变量也可以象其它类型的变量一样赋值、 运算,不同的是结构变量以成员作为基本变量。结构成员的表示方式为: 结构变量,成员名。
2、结构数组和结构指针
结构是一种新的数据类型, 同样可以有结构数组和结构指针。结构指针是指向结构的指针。它由一个加在结构变量名前的"*" 操作符来定义。
使用结构指针对结构成员的访问,与结构变量对结构成员的访问在表达方式上有所不同。结构指针对结构成员的访问表示为:结构指针名->结构成员,其中"->"是两个符号"-"和">"的组合,好象一个箭头指向结构成员。需要指出的是结构指针是指向结构的一个指针,即结构中第一个成员的首地址,因此在使用之前应该对结构指针初始化,即分配整个结构长度的字节空间。
想了解更多有关C语言的详情,推荐咨询达内教育。达内教育已从事19年IT技术培训,累计培养100万学员,并且独创TTS8.0教学系统,1v1督学,跟踪式学习,有疑问随时沟通;自主研发的26大课程体系更是紧跟企业需求,企业级项目,课程穿插大厂真实项目讲解,对标企业人才标准,制定专业学习计划,囊括主流热点技术。感兴趣的话点击此处,免费学习一下 参考技术D 第一种是定义一个结构体并取个student结构体名,下次定义结构体是:
只要:student <标识符>; 乳student stu;
而第二种:必须这样定义:struct student stu;
参考资料:自己的心的--from chaohu college
以上是关于c语言结构体的问题的主要内容,如果未能解决你的问题,请参考以下文章