c语言结构体

www.zhiqu.org     时间: 2024-06-16

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等标准类型名一样,都是数据类型,具有同样的作用,都是用来定义变量的。

参考资料来源:百度百科—结构体



无论是在写种语言,当调用任何函数foo(type x)的时候,你都需要考虑函数的调用本身是否会对x的值造成影响。
就本例的C代码来说,这里type是一个结构体。当调用结构体时,实际上函数把这个结构体又复制了一份,并对复制的内容进行修改,所以对被调用的结构体无影响。
如果想要让函数改变原被调用结构体,需要把函数参数类型改成指针
int func(struct tree* t)
{
t->x=10;
t->s="computer";
return(0);
}
然后在调用的时候写成
func(&t);
就行了。原因是虽然结构体指针的值被复制了一份,但是结构体本身没有被复制。所以函数得到了指向结构体的指针的一份copy,对指针指向的原结构体进行了修改。

#include <stdio.h>
struct tree
{
int x;
char *s;
} t;
int func(struct tree t)
{
t.x=10;
t.s="computer";
return(0);
}
main()
{
t.x=1;//此处t是全局变量t
t.s="minicomputer";
func(t);//将全局变量t的值传递给形参t,这是单向值传递,所以在func里改变的是func里的局部变量的值,而不是全局变量的值
printf("%d?%s\n",t.x,t.s);//此处t也是全局变量t

}

执行func后,吧结构体的内部变量重新赋值了!

C语言 结构体~

#include "stdafx.h"这个头文件的问题,找不到该头文件
#include "stdafx.h"
#include
#include

void main()
{

enum body
{
{a,b,c,d}month[31],j;
int i;
j=a;
for(i=1;i<=30;i++)
{
month[i]=j;
j++;
if(j>d)
j=a;
}
for(i=1;i<=30;i++)
{
switch(month[i])
{
case a:printf("%2d%c",i,'a');break;
case b:printf("%2d%c",i,'b');break;
case c:printf("%2d%c",i,'c');break;
case d:printf("%2d%c",i,'d');break;
default:break;
}
}
printf("
");

}
}

还有就是最后少了一个大括号

#includestruct student{int num;char name[8];float score;};float average(struct student stu[]);//子函数定义在调用该子函数后时,需要在调用之前声明int main(){int i;float ave=0;struct student stu[6];for(i=0;i<6;i++){scanf("%d%s%f",&stu[i].num,stu[i].name,&stu[i].score);//scanf要用取地址符&}ave=average(stu);//参数是stu,不是6printf("%f
",ave);return 0;}float average(struct student stu[]){float a=0;//a要初始化为0int i;for(i=0;i<6;i++){a+=stu[i].score;}a=a/6;return a;}


#倪泉丽# C语言 结构体 -
(17136551345): Birthday &nbsp.name); is&nbsp.birth; stdio;&nbsp编了一个,测试成功;0; scanf(" char char ID STU_NUM 5 typedef struct date { &stu[i]; : "); scanf("%s";for (i = DATE , stu[i];* ReadStudent(STUDENTS * &nbsp: } printf(" , & &nbsp,可拷贝;&nbsp: #define day;= 0; i&nbsp, float score[3]; &nbsp.h> #include

#倪泉丽# c语言 结构体 -
(17136551345): 你上面的程序没有错#include int main(){ struct stu { int sum; char name[20]; int age; int xb; }a[5]; \*定义5个人*...

#倪泉丽# c语言结构体 -
(17136551345): struct s是一个结构体数据类型,简单来说相当于int, float,x是一个结构体变量struct s{ }; 是结构体的声明struct s x;是结构体变量的声明...多看书.基础要扎实

#倪泉丽# 什么是结构体类型?C语言中结构体类型占几个字节? -
(17136551345): 结构体类型就是一种数据类型撒,譬如定义一个整型变量int a;意思是a的数据类型是整形的,定义一个结构体变量b,他的数据类型就是结构体类型的!!

#倪泉丽# 怎样学C语言的结构体,本人学了许久还是没看懂它的程序.
(17136551345): 你好: C语言中的结构体,听名字有点吓人,其实不难.下面我给你详细说明: 首先,结构体,是自定义的数据类型,就如int 、 char 、float 这些类型是编译器自定义的类型一样.那么,结构体就是属于自身定义的类型. 这种类型,可以是多...

#倪泉丽# C语言 结构体 怎么定义 使用 举个例子 看看 -
(17136551345): struct a { int m; char f[20];....} 这就是结构体,定义一般放在头文件的开头!

#倪泉丽# C语言的结构体的具体作用是?C的主要用途?
(17136551345): C语言的结构体是可以把定义的变量多元化,分类化! C是一种高级语言! 用他编写程序语法结构要求不是很严,同时程序执行率高!

#倪泉丽# c语言结构体 急!急!急!!! -
(17136551345): 我的答案跟2楼的差不多.通过调式,发现dm和mc的地址是连着的,所以会出现两次名称.所以我申请了5个字符,最后一个赋值为'\0'就行了.至于第一个问题,我的改法是把最后的%d后面的空格去掉就可以了.我测试过了,结果应该符合...

#倪泉丽# C语言——结构体
(17136551345): #include"stdio.h" main() { struct zy { int xh; char xm[10]; char xb; int cj; }; int x,y,i; zy a[10]; x=0;y=0; for(i=0;i<4;i++) {scanf("%d",&a[i].xh); getchar(); scanf("%s",&a[i].xm); getchar(); scanf("%c",&a[i].xb); scanf("%d",&a[i].cj); if(a[i].xb=='y'&&...

#倪泉丽# C语言具体介绍结构体类型 -
(17136551345): C语言中的结构体类型给我的感觉就像是一个实体的抽象,与面向对象程序设计中的类不同,他仅是一种数据类型,它就只是一种数据类型,因此对它的使用你可以当作是别的数据类型一样,只不过它里面可以包含很多数据类型,结构体仅仅是...