c语⾔⾃定义的结构体,c语⾔定义多个结构体
本⽂收集整理关于c语⾔定义多个结构体的相关议题,使⽤内容导航快速到达。
内容导航:
Q1:C语⾔中定义⼀个结构体如何在不同的.C⽂件中使⽤。
#include
然后就⽤啊
正式⼀点的,可以声明
extren struct XXX;
就可以了
注意头⽂件需要⽤#ifndef #define #endif
或者#pragama once,确保头⽂件只引⼊⼀次,以免引起重复定义的错误。
Q2: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类型。
Q3:C语⾔结构体定义
第⼆个struct student是定义了⼀个student结构体,这个明⽩吧。
第⼀个是⽤typedef把struct student这个结构体类型名字重新定义为student,也就是说struct student和student表⽰同⼀个事物,都是⼀个类型的标识符,⽐如 typedef int zhengshu; 就是你把整型int重命名为zhengshu,下⾯定义:int i; 和 zhengshu i; 两句就是等价的了
WWW.YIjiTaO+.cOm
Q4:c语⾔中定义结构体有哪些⽅法?
struct time_str{
unsigned char hour,min,sec;
unsigned int days;
}time_of_day;
这告述编译器定义⼀个类型名为 time_str 的结构 并定义⼀个名为 time_of_day 的结
构变量 变量成员的引⽤为结构 变量名.结构成员
struct time_str oldtime,newtime;
这样就产⽣了两个新的结构变量 这些变量都是相互独⽴的
Q5:c语⾔zhong怎样⼀次定义多个结构体指针变量
struct stu *head,*p,*q;
head=p=q=(struct stu*)malloc(LEN);
p->name="asdf";
p->score=45;
printf("name:%s\nscore:%.3f",p->name, q->score); // ⽆ &
wW∽w.YIjITaO.Com
Q6:C语⾔ 结构体数组的个数如何⾃⼰定义?
C99标准出来以前,C语⾔不⽀持动态定义数组⼤⼩,只能采⽤动态分配指针⽅式来完成动态数组的个数定义。如:
12345678structst{intx,y;charstr[10];};structst*array;intn;printf("inputn:");scanf("%d",&n);array=
c语言struct头文件(structst*)malloc(n*sizeof(structst));//动态分配n个结构体空间,接下来array的操作,与数组操作是相同的,如:array[0].x=1;
C99以后,C语⾔标准开始⽀持动态定义数组,但动态数组,在其确定个数之后,在其⽣命期中,就不可变了。如:
12345678structst{intx,y;charstr[10];};intn;printf("inputn:");scanf("%d",&n);structstarray[n];//定义动态数组array[0].x=1;
Q7:C语⾔结构体别名定义问题
C语⾔给结构体定义别名⽤typedef关键字操作,就两种情况:
给结构体起⼀个别名,如:
typedef struct ABC{
...
}S;——这就为结构体ABC定义了⼀个别名S。以后写S x;就等价于写struct ABC x;了。
给结构体指针起⼀个别名,如:
typedef struct ABC{
...
}*PS;——这就为结构体指针ABC *定义了⼀个别名PS。以后写PS pt;就等价于写struct ABC *pt;了。注意这⾥是⽤typedef给struct ABC{...} *起⼀个别名PS,⽽不是给struct ABC{...}起⼀个别名*PS——后者是说不通的,起码的错误是标识符不可能以*开头!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论