c语言结构体定义 c语言结构体定义时初始化
C语言结构体名代表什么?是地址吗?
voidt.s="minicomr";结构体的定义是一种类型的定义,就像int、float一样来定义变量,通过这种类型定义出的变量可以当做是地址。当做实参时可以通过&来取地址,形参指针接收。
c语言结构体定义 c语言结构体定义时初始化
c语言结构体定义 c语言结构体定义时初始化
两句就是等价的了
struct book arr[5];
其中struct book 相当于 int 、char。这个够具体了吧。
c语言结构体有哪些?
3. 不定义结构类型,直接定义结构变量。如下:
种:只有结构体定义:
2.char job;
4. f{//初始化月份数组loat height;
5. };
第二种:附加该结构体类型的“结构体变量”的初始化的结构体定义:
1. //直接带变量名Huqinwei
2. struct stuff{
3. char job[20];
4. int age;
5.所以head的类型也就是struct STU float height;
也许初期看不习惯容易困惑,其实这就相当于:
2. char job;
4. float height;
5. };
6. struct stuff Huqinwei;
第三种:如果该结构体你只用一个变量Huqinwei,而不再需要用。
struct stuff yourname; 去定义第二个变量。那么,附加变量初始化的结构体定义还可进一步简化出第三种:
1. struct{2. char job;
4.float height;
5. }Huqinwei;
C语言定义一个结构体变量(包括年、月、日),输入一个日期,计算该日在本年中是第几天。
#include
#include
#include
struct date_time
{int year;
int month;
int day;
}DATE;
{int i,len,flag,day_cnt;
char str[50],buf[10];
struct date_time date;
int mon[12];
while(1)
for(i=0;i<12;i++) mon[i] = 31;
mon[1] = 28;
mon[3] = 30;
mon[5] = 30;
mon[8] = 30;
mon[10] = 30;
printf("please input date eg(20010203):");
scanf("%s",str);
len = strlen(str);//20121212
if(len!=8)//长度不对直接报错 0000 - 9999
{printf("input error!n");
continue;
}flag = 1;
while{struct complex x,y,s,p;(len--)//不是数字报错
{if(str[len]<'0'||str[len]>'9')
{printf("input error!n");
flag = 0;
break;
if(flag)//如果上面检测有错 不进行if里面的作
{//判断是否为闰年
memset(buf,0,10);
strncpy(buf,str,4);
date.year = atoi(buf);
if((date.year%4==0)&&(date.year%100!=0)||(date.year%//printf("date.year = %d rn",date.year);400==0)) mon[1]=29;
//判断月份是否合法
memset(buf,0,10);
strncpy(buf,str+4,2);
date.month = atoi(buf);
if(date.month>12||date.month<1)
{printf("month input error!n");
continue;
}//判断日期是否合法
memset(buf,0,10);
strncpy(buf,str+6,2);
date.day= atoi(buf);
//printf("daintte.day = %d rn",date.day);
if(date.day>31||date.day<1)
{printf("day input error!n");
continue;
}//比如输入20050525 有4个月+25天
//把数组前4个月的天数加起来 分别对应数组下标0 1 2 3
//所以下面循环要月份减一
day_cnt = 0;
for(i=0;i {day_cnt += mon[i]; printf("mon[%d] = %d rn",i,mon[i]); }day_cnt += date.day; printf("days = %d rn",day_cnt); break; return 0; }楼主 求分!不懂可以给我留言! 结构体名字是类型名,变量名是实体名,一个类型可以有许多实体。 具体作,举例讲解如下: };//并不占用任何空间,就好像int一样1.结构体类型定义 定义方式1: Typedef struct LNode { int data; // 数据域 struct LNode next; // 指针域 } LinkList; struct LNode { int data; // 数据域 struct LNode next; // 指针域 }; Typedef struct LNode LinkList; 以上两个定义方式是等价的,是将LinkList定义为struct LNode类型,即LinkList被定义为一个类型名。这样就可以用LinkList来定义说明新的变量了,如: LinkList L; 即将L定义为struct LNode类型的指针变量 2.结构体类型变量定义 定义方式1: struct LNode { int data; // 数据域 struct LNode next; // 指针域 }LnodeA; struct LNode { int data; // 数据域 struct LNode next; // 指针域 }; struct LNode LnodeA; 以上两个定义方式也是等价的,这样就将LnodeA定义为一个truct LNode类型的变量,即LnodeA为一个truct LNode类型的变量名。 首先需要弄清typedef的作用: int a; //首先定义一个int型的变量a my_int b; //然后就可以使用typedef声明的新的数据类型my_int来定义新的变量b,此时b就是my_int类型也就是int类型 struct LNode struct LNode next; }上面这个结构体定义应该很熟悉,就是定义了一个LNode的结构体变量,可以类似于上面的变量a。这里我们把struct LNode结构体变量替换为变量a,所以你的结构体变为: typedef a LNode,LinkList 上面的代码等价于下面两行: typedef a LNode; //定义LNode是一种struct LNode的数据类型,比如:LNode my_struct; typedef a LinkList; //定义了一种指向LNode数据类型的指针类型LinkList,比如:LinkList my_point; 第二个struct 个是用typedef把struct student这个结构体类型名字重新定义为student,也就是说struct student和studentprintf(" sum=%5d+%5di表示同一个事物,都是一个类型的标识符,比如 typedef zhengshu; 就是你把整型int重命名为zhengshu,下面定义:int i;1. struct stuff{ 和zhengshu i; 打字不易,如满意,望采纳。 定义一个结构体 LNode,LinkList是给这个结构体数据类型取名字。相当于 int char struct LNode next;是什么意思啊? //定义该的指针域,用于保存下个的地址 如果去掉“}”后面的LNode可以吗 //可以不过你用这个类型的话就得连续写struct LNode 这有链表的样子,这个next是记录下一个LNode在那个,就好比一个,至于去掉}这个我不知你的原因,你可以告诉我为什么想去掉吗?回答得知道你怎么想的 定义一个结构体,包含一个 char 数据,和下一个 的地址。 struct LNode next; 是定义下一个 的指针变量。 去掉} ,会报错的,语法不完整。 可以啊。那就只定义了一个指针别名LinkList啊! 定义一个结构体,比如说就你这个 struct STU {int age; struct STU next; }; 然后我想定义一个结果提类型的指针,应该是struct STU p;或者定义一个普通的结构体变量struct STU a; 比较麻烦,用typedef后 {int age; struct STU next; }linklist; 那么现在linklist就代表这个结构体,现在定义结果提指针linklist p;就方便了 同样,把他定义成 {int age; struct STU next; }linklist; 那么linklist就是代表这个结构体指针类型,linklist head;head就是结构turn1 = i;体指针类型了; {int age; struct STU next; }linklist; 此处了一个型的类型,即struct STU ,即指向结构体STU的指针 head为一个指向STU结构体类型的指针。但是并没有未其分配具体的空间。可以将一个已定义为STU结构体的指针赋给定义方式2:它。 这表示 linklist 是 struct STU 的指针类型, 后面定义的 head 是 linklist 类型的,也就是指向 struct STU 的指针。 void inputarr(STUDENT s[ ], int n) for(i = for(i=0;i<5;i++)0; i < n; i++) {printf("Enter %d student's r(Name birthday score):n", i+1); scanf("%s %c %d %d %d %f", s[i].name, &s[i]., &s[i].birthday.year, &s[i].birthday.month, &s[i].birthday.day, &s[i].score); void outputarr(STUDENT s[ ], int n)//printf("date.montchar [12];h = %d rn",date.month ); for(i = 0; i < n; i++) {printf("%s %c %d %d %d %.2fn", s[i].name, s[i]., s[i].birthday.year, s[i].birthday.month, s[i].birthday.day, s[i].score); 首先,定义一个结构的一般形式为: struct结构名 {//成员表列 }; 成员表由若干个成员组成, 每个成员都是该结构的一个组成部分。对每个成员也必须作类型说明,其形式为:“类型说明符 struct stu {int num; char name[20]; char ; float score; }; 在这个结构定义中,结构名为stu,该结构由4个成员组成。 个成员为num,整型变量;第二个成员为name,字符型数组;第三个成员为,字符型变量;第四个成员为score,浮点型变量。 应注意在括号后的分号是必不可少的。 然后,当结构定义完成后,即创建了一种数据类型,可以像int、float等内置类型一样使用,以上面定义的stu结构体来和int类型对比着看。 a;//定义一个int类型的变量a stu a; //定义一个stu类型的变量a p; //定义一个int类型的指针p stu p; //定义一个stu类型的指针p a[10];//定义一个int类型的数组a,它有10个元素,每个元素是int类型 stu a[10];//定义3. int age;一个stu类型的数组a,它有10个元素,每个元素是stu类型。 struct student { char stuno[10];//学号一般比较长,用字符数组存放。 float score[2];//数组中存放2门课的成绩; float sumtruct boy, girl;;//存放总分 float er;//存放平均成绩 }stu[5]; //结构体数组,能表struct book mybook, storybook;示5个同学各自的信息 struct student {int num; char name[20]; float score1,score2,sum,erage; }; void main() {struct student stu[5]; int i; {printf("请依次输入第%d个学生的学号,姓名,和两门成绩:",i+1); scanf("%d%s%f%f",&stu[i].num,stu[i].name,&stu[i].score1,&stu[i].score2); stu[i].sum=stu[i].score1+stu[i].score2; stu[i].erage=stu[i].sum/2; }printf("学号 姓名 成绩 总成绩 平均成绩n"); printf("%d %s %.2f %.2f %.2f %.2fn",stu[i].num,stu[i].name,stu[i].score1,stu[i].score2,stu[i].sum,stu[i].erage); } C语言结构体阵列的定义 1、C语言结构体阵列的定义:阵列是有序的并且具有相同型别的资料的。 2、结构阵列就是具有相同结构型别的变数。如要用C语言,定义一个班级40个同学的姓名、性别、年龄和住址, 可以做成一个结构阵列。 结构阵列成员的访问是以阵列元素为结构变数的,它的形式5、分配律:z1×(z2+z3)=z1×z2+z1×z3为: 1、结构阵列元素—成员名。 3、实际上结构阵列相当于一个二维构造, 维是结构阵列元素, 每个元素是一个结构变数, 第二维是结构成员。 C语言结构体阵列的定义是什么? 结构阵列就是具有相同结构型别的变数。 如要定义一个班级40个同学的姓名、性别、年龄和住址, 可以定义成一个结构阵列。如下所示: struct{ char name[8]; char [2]; int age; char addr[40]; }student[40]; struct string{ char name[8]; char [2]; int age; char addr[40]; }; struct string student[40]。 C语言是一门通用计算机程式语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低阶储存器、产生少量的机器码以及不需要任何执行环境支援便能执行的程式语言。 尽管C语言提供了许多低阶处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程式可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(微或称MCU)以及超级电脑等作业平台。 C语言结构体阵列 结构阵列就是具有相同结构型别的变数。 如要定义一个班级40个同学的姓名、性别、年龄和住址, 可以定义成一个结构阵列。如下所示: struct{ char name[8]; char [2]; int age; char addr[40]; }student[40]; struct string{ char name[8]; char [2]; int age; char addr[40]; }; struct string student[40]; scanf_s("%s %d %d %d", s[p].name,10,s[p].score[0],1, s[p].score[1],1, s[p].score[2]),1; 前面的name不用加& 因为是阵列名 但是后面的score都需要加&的啊、 c语言结构体阵列 引数2 和你 宣告的不同 (1)初始化语句中的每个初始化值用单引号引起来,即改为iA[N]={{‘1’,‘2’},{‘1’,‘1’},{‘1’,‘3’}},B[N]={{‘1’,‘1’},{‘1’,‘3’},{‘1’,‘5‘}}; (2)输出语句printf("%s.%s ",(A[m].a),(A[m].b));中的%s改成%c 急!c语言结构体阵列的问题 struct student {int num; char name[20]; double class1; double class3; }; struct student stu[20]; void input() {scanf("%d%s%lf%lf%lf",&stu[i].num,stu[i].name,&stu[i].class1,&stu[i].class2,&stu[i].class3); void erage() void class_erage() {int i,j; double sum = 0; {sum+=stu[i].class1; }printf("class 1's erage is %lfn",sum/5); sum =typedef a my_int; //typedef 的作用是声明一种新的数据类型,该数据类型和变量a所属的类型一样。 0; {sum+=stu[i].class2; }printf("class 2's erage is %lfn",sum/5); sum = 0; {sum+=stu[i].class3; }printf("class 3's erage is %lfn",sum/5); }void class() {int i,j,k; double maxscore; maxscore = -1; {if((stu[i].class1+stu[i].class2+stu[i].class3)/3>maxscore) {maxscore = (stu[i].class1+stu[i].class2+stu[i].class3)/3; k = i; printf("The highest erage score is:%sn",stu[k].name); }void class_max() double max1=-1,max2=-1,max3=-1; {if(stu[i].class1>max1) {max1 = stu[i].class1; {if(stu[i].class2>max2) {max2 = stu[i].class2; turn2 = i; {if(stu[i].class3>max3) turn3 = i; printf("The high‘s score of class1 is %s %lfn",stu[turn1].name,max1); printf("The high‘s score of class2 is %s %lfn",stu[turn2].name,max2); printf("The high‘s score of class3 is %s %lfn",stu[turn3].name,max3); {input(); class_erage(); return 0; }你看看吧!我测试过了 能用,具体的输出格式 你来决定,输入资料要这样输入 001 liming 87.00 94.00 79.00 002 chenfei 68.00 89.00 82.00 003 sunjie 78.00 90.00 74.00 004 hewei 69.00 70.00 62.00 005 liuli 84.00 92.00 81.00 C语言结构体阵列的初始化 同学,你注意到了Create()函式里面,你又定义了一句: List pr; 了么?这句话时关键,首先,你在main 函式(我猜应该是main吧)中写道: List pr1=Creat("p1",2,1); Insert(&pr1); 看,你这个pr1是个区域性变数吧?只在main()中有效的。而你上面那个Create中定义的呢?也是个区域性变数,只在Create()中有效。所以,即使你在Create()中费劲全力为pr赋值。等呼叫完Create()后,pr还是会消亡的,回到main,时,这里的pr1就是另一个List变量了。 总而言之,Creat()里面的pr和main()里面的pr1是完全不同的两个变数。要想让他们变成一个变数。可选用指标传参。或者定义成全域性变数。 另外,我一看到你的描述的那个“烫”字,就知道你用的是VC6.0吧?呵呵 c语言结构体阵列问题 理解有误 你的阵列vCPUWRITE_Rx1它的型别是char []也就是说 它是一个8个字元的char型阵列 而不是结构体阵列 结构体型别为struct tag_ID501 这里用了一个很常用的方式 即通过巨集定义dCPUWRITE_Rx1 把char阵列vCPUWRITE_Rx1对映成了struct tag_ID501 (二者都是占8个位元组的空间 所以可以这样做 不然会出错) 所以呼叫的时候可以 dCPUWRITE_Rx1.CPUWRITE_DAT1 = ... dCPUWRITE_Rx1.CPUWRITE_DAT4... 其他的元素类似 C语言结构体阵列问题 遍历结构体阵列与遍历普通阵列的方法是完全一样的。下面提供一个例子作参考。#include "stdafx.h"If the vc++6.0, with this line.#include "stdio.h"struct stu{ int num; char name,; float score;}boy[2]={ {1,"ck",'M',100}, {2,"aa",'W',99}};int main(void){ struct stu p; for(p=boy;pnum,p->name,p->,p->score); return 0;}输出如:当boy的元素n太大(如几千或几万以上)时,主函式中可增设一个structstupend指标,事先计算出pend=boy+n;,for回圈控制语句写p 以前没考虑过,刚才试了一下可以。不过不知道你说的是哪种定义,是定义一种结构体的类型,还是定义一个结构体的变量。反正下面这个函数是可以用的 abc() {struct {int a; b; }dd; struct dd; dd.a=10; d6. }Huqinwei;d.b=20; }谁能告诉我 c语言结构体变量和结构体成员到底有什么关系 谢谢
int main()C语言结构体的定义
typedef struct STUC语言结构体别名定义问题
double class2;C语言结构体,求大佬指点
请问 C语言里的 结构体中定义变量 后面的:是什么意思
char t_code[7]; //邮编C语言结构体数组的定义是什么?
2、例如:student[0].name,student[30].ageC语言结构体阵列的定义
// 把用到的两个函数方法定义即可结构体可以在函数内部定义吗?C语言
成员名;”。成员名的命名应符合标识符的书写规定。例如:
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系 836084111@qq.com 删除。