C语言中如何把结构体变量定义在主函数内,再调用一个自定义输入函数和输出函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中如何把结构体变量定义在主函数内,再调用一个自定义输入函数和输出函数相关的知识,希望对你有一定的参考价值。

有以下结构类型说明:
struct stud
long num[5];
char name[10];
int s[4];
double ave;

请编写:
1) 函数readrec输入记录,并计算平均分。
2)函数writerec输出记录。
3)main函数调用readrec函数和writerec函数,不允许使用全局变量,函数之间的数据全部使用参数传递。

可以在外部定义结构体类型,然后在主函数内部定义该类型的变量。在输入输出函数调用时,以结构体变量指针做为参数传递。

参考代码如下:

#include <stdio.h>
struct test

    int a;
;//定义结构体类型struct test。
void input(struct test* p)//输入函数,以指针作为参数。

    scanf("%d",&p->a);


void output(struct test *p)//输出函数,以指针作为参数。这里也可以以结构体变量作为参数,不过用指针效率更高。

    printf("%d\\n", p->a);


int main()

    struct test v;//定义结构体变量v。
    input(&v);//输入。
    output(&v);//输出。
    
    return 0;
参考技术A typedef struct student

char name;

int id

stu;
int main()
stu a;这就是结构体变量定义在主函数内

不懂继续追问
参考技术B //我不知道你那个结构体中long num[5];和int s[4];分别表示什么,我把long num[5];改为了char num[5];我把它当学号处理的,int s[4];我是当作这个人的四科成绩,
//程序如下,看看不是,如不是,就把问题写明白,
#include<stdio.h>
#define N 3//N个人,
struct stud
char num[5];
char name[10];
int s[4];
double ave;
;
readrec(struct stud std[])

int i,k,sum;
for(i=0;i<N;i++)

sum=0;
printf("please input %d information.\n",i+1);
scanf("%s%s",std[i].num,std[i].name);
for(k=0;k<4;k++)
scanf("%d",&std[i].s[k]);sum+=std[i].s[k];
std[i].ave=(float)sum/4;


writerec(struct stud std[])

int i;
printf("the ave of the students is:\n");
for(i=0;i<N;i++)
printf("%f\n",std[i].ave);

void main()

struct stud student[N];
readrec(student);
writerec(student);

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

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

参考技术A

  struct在C语言中是一个关键字,用于定义结构数据类型。


  问题中的两种定义的区别在于第一种是给student数据类型,重新定义了一个类型别名,而第二种则单纯的表示一种叫做student的数据结构类型。两者的主要区别在于后面直接定义变量时。如下代码,则可以直接在结构体后面定义一个zhang_san的结构体变量。

struct student

int num;
struct student *next;
zhang_san;

  而第一种的定义,则会出现错误。

typedef struct student

 int num;
 struct student *next;
student zhang_san;

  
扩展:

  “结构”是一种构造数据类型,现在一般叫做用户自定义数据类型,它是由若干“成员”组成的。 每一个成员可以是一个基本数据类型或者又是一个构造类型。 结构即是一种“构造”而成的数据类型, 那么在说明和使用之前必须先定义它,也就是构造它。如同在说明和调用函数之前要先定义一样。


  定义一个结构的一般形式为:

struct结构名

//成员表列
;


  成员表由若干个成员组成, 每个成员都是该结构的一个组成部分。对每个成员也必须作类型说明,其形式为:“类型说明符 成员名;”。成员名的命名应符合标识符的书写规定。例如:

struct stu

    int 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语言中如何把结构体变量定义在主函数内,再调用一个自定义输入函数和输出函数的主要内容,如果未能解决你的问题,请参考以下文章

在C语言中参数是如何传递的?

c++中如何跨cpp文件调用结构体变量

c语言中结构体变量做函数参数的问题

c语言如何对结构体某一成员初始化

请教高手,C语言中,把变量定义在主函数之外和定义在主函数之内有啥区别?

C语言结构体定义