结构体

结构体

结构体是将很多类型的数据放在一块形成一个新的复合数据类型。

如何定义结构体

三种方法:

struct type
{
       .
       .
       .
     }struct type student_1,student_2;

这是结构体定义的一般方法:类型和变量分开定义,先定义类型再定义变量。

结构体类型定义
结构体类型名 结构体变量名表;
struct type
{
    .
    .
    .
    } student_1,student_2;

这是在定义类型的时候同时定义变量。

struct
{
    .
    .
    } student_1,student_2;

这种方法是不定义类型名,直接定义结构体变量。

注:struct后面没有类型标识符。
#include<stdio.h>
int main()
{
    struct Student
    {
        int num;
        char name[20];
        float score;
    }student1,student2;
    scanf("%d%s%f",&student1.num,student1.name,&student1.score);
    scanf("%d%s%f",&student2.num,student2.name,&student2.score);
    printf("the higher score is:\n");
    if  (student1.score>student2.score)
        printf("%d  %s  %f",student1.num,student1.name,student1.score);
    else if(student2.score>student1.score)
        printf("%d  %s  %f",student2.num,student2.name,student2.score);
    else {
    printf("the higher score is no existence");}

}

对于上面这个程序,就是简单的结构体问题,输入两个学生的学号,姓名以及分数。然后根据分数的高低,来输出最高学生的相关信息。
在上面的scanf中,因为name是一个数组,所以在输入的时候不需要取地址。

结构体变量的引用

再对结构体变量进行赋值时,不可全部赋值,只能说是给结构体的某个成员进行赋值。在赋值的时候,会用到运算符‘.’
这个运算符要比*的级别高,例如:student_1.score 它表示访问了student_1的score。
在给结构体中的变量进行赋值的时候,可以调用strcpy函数。
strcpy(student_1.num,”03171104”)
strcpy(s1,s2),strcpy函数的作用是将s2的值全部copy到s1中,包括字符串结束标志。

结构体数组

struct type
{
      int num;
      char name[10];
      float score;
      char sex;
  } struct type s[3];//定义了一个结构体数组s,它里面有三个元素,每个元素在内存中是连续存放的。
结构体数组元素的引用
strcpy(s[0].sex,"w")
注:结构体数组元素不能整体进行输入或输出。

结构体和函数

#include<stdio.h>
struct type
{
    char num[8];
    char name[10];
    char sex;
    float score;
 }; 
 struct type input()
 {
    struct type s0;
    printf("请输入各同学的相关信息:\n");
    scanf("%s %s %c %f",s0.num,s0.name,&s0.sex,&s0.score);
    return s0;
  } 
  void print(struct type s0) 
{
    printf("输出同学的相关信息:\n");
    printf("%s %s %c %f\n",s0.num,s0.name,s0.sex,s0.score) ;    
  }
 int main()
{
    int i;
    struct type s[2];
    for (i=0;i<2;i++){
        s[i]=input();
    }
    for(i=0;i<2;i++){
        print(s[i]);
    }

}

利用了 input这个输入函数和print这个输出函数 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值