精华内容
下载资源
问答
  • 结构体变量的初始化和引用
    千次阅读
    2021-05-24 06:33:00

    数组的初始化,需要通过一常量数据列表,对其数组元素分别进行初始化,形式如下:

    数据类型 数组名称[数组长度]={初始化值1,初始化值2,…, 初始化值n};

    例如,定义长度为5的整型数组,并对其初始化的语句如下:

    int A[5]={20,21,0,3,4};

    结构体变量的初始化方式与数组类似,分别给结构体的成员变量以初始值,而结构体成员变量的初始化遵循简单变量或数组的初始化方法。具体的形式如下:

    struct 结构体标识符

    {

    成员变量列表;

    };

    struct结构体标识符 变量名={初始化值1,初始化值2,…, 初始化值n };

    例如,定义struct Point类型变量,并初始化的语句如下:

    struct Point oP1={0.0,0.2,0.3};

    struct Point类型变量oP1的三个成员变量的值分别为

    oP1.x=0.0,

    oP1.y=0.2

    oP1.z=0.3

    由于定义结构体变量有三种方法,因此初始化结构体变量的方法对应有三种,上面已经介绍了其中的一种形式,其他两种形式如下:

    struct Point

    {

    double x;

    double y;

    double z;

    } oP1={0.0,0.2,0.3}; struct

    {

    double x;

    double y;

    double z;

    } oP1={0.0,0.2,0.3};

    在初始化结构体变量时候,既可以初始化其全部成员变量,也可以仅仅对其中部分的成员变量进行初始化。例如:

    struct Student

    {

    long id;

    char name[20];

    char sex;

    }a= {0};

    其相当于a.id=0;a.name=“”;a.sex=‘\0x0’。

    仅仅对其中部分的成员变量进行初始化,要求初始化的数据至少有一个,其他没有初始化的成员变量由系统完成初始化,为其提供缺省的初始化值。

    各种基本数据类型的成员变量初始化缺省值如下所示。

    数据类型

    缺省初始化值

    Int

    0

    Char

    ‘\0x0’

    float

    0.0

    double

    0.0

    char Array[n]

    “”

    int Array[n]

    {0,0…,0}

    对于复杂结构体类型变量的初始化,同样遵循上述规律,对结构体成员变量分别赋予初始化值。

    posted on 2010-06-12 16:19 Tim 阅读(4070) 评论(1)  编辑 收藏 引用 所属分类: C/C++语言

    更多相关内容
  • 结构体变量初始化和引用

    千次阅读 2021-01-21 18:28:37
    结构体变量初始化和引用 任务描述 本关任务:从键盘输入两个学生的学号,姓名成绩(整数),分别存入结构体中,输出成绩较高的学生的学号,姓名成绩。 相关知识 结构体类型用于描述由多个不同数据类型的数据...

    结构体变量的初始化和引用

    任务描述

    本关任务:从键盘输入两个学生的学号,姓名和成绩(整数),分别存入结构体中,输出成绩较高的学生的学号,姓名和成绩。

    相关知识

    结构体类型用于描述由多个不同数据类型的数据构成的复合数据,是一种用户自定义数据类型。

    结构体的定义

    定义格式为

    struct <结构体类型名>
    {
        <成员表>
    };  //分号结束定义
    

    例如,以下是一个描述学生信息的结构体类型定义:

    struct student
    {
        long number;
        char name[20];
        char sex;
        float score;
    };
    

    在这个结构体定义中,结构体类型名为student,该结构体由4个成员组成。
    第一个成员为number,整型变量;
    第二个成员为name,字符数组;
    第三个成员为sex,字符变量;
    第四个成员为score,实型变量。
    应该注意在花括号后的分号是不可少的。

    声明结构体变量

    声明结构体变量有四种方式,他们在本质上没什么区别,可根据自己习惯和要求选择你喜欢的方式:

    1. 先定义结构体,再声明结构体变量
    struct student
    {
      long number;
      char name[20];
      char sex;
      float score;
    };    //先定义结构体
    struct student s1,s2;//声明结构体变量
    
    1. 在定义结构体类型的同时声明结题变量
    struct student
    {
      long number;
      char name[20];
      char sex;
      float score;
    }s1,s2;    //在定义结构体的同时定义结构体变量
    
    1. 直接声明结构体变量
    struct
    {    //省去结构体名
      long number;
      char name[20];
      char sex;
      float score;
    }s1,s2;    //直接给出结构体变量
    
    1. typedef引用别名来定义
    typedef struct student STUDENT;     //给结构体student定义别名
    struct student
    {
      long number;
      char name[20];
      char sex;
      float score;
    };
    STUDENT s1,s2;    //使用别名STUDENT定义结构体
    

    结构体成员的访问

    结构体变量的成员访问方式为:

    <结构体变量名>.<结构体成员变量>

    结构体变量的每个成员都可以看做一个独立的变量,称为成员变量,对成员变量所能做的操作由成员变量的类型决定。

    例如,下面的操作是合法的

    s1.number=2010001;//number成员是long类型
    strcpy(s1.name,"lili")//name成员是字符数组类型
    

    结构体成员要和结构体变量名联合使用,即以“结构体变量名.成员名”的访问方式,所以不同结构体类型的成员名字可以相同,并且他们还可以与程序中的其他非结构体成员的名字相同,不会引起歧义或冲突。

    注意:
    如果结构体变量的成员本身又是一个结构体类型,则要用若干成员运算符找到最低一级成员,只能对最低一级的成员进行赋值或者读写及运算。

    例如:

    struct data
    {
        int month;
        int day;
        int year;
    };
    struct student
    {
        long num;
        char name[20];
        char sex;
        data birthday;
    }stu1;
    

    对以上定义的结构体变量stu1,可以通过以下方式访问其中各成员:

    stu1.num;
    stu1.birthday.month;
    

    结构体变量初始化

    定义结构体变量的同时可以对其进行初始化,格式与数组变量初始化类似,用花括号吧每个成员的初始值括起来,每个初始值与相应的成员对应。

    例如,对studen结构体类型的变量s1进行初始化:

    struct student s1={2010001,"lili",'F',97};
    

    在定义结构体类型时不能对其成员进行初始化,因为类型不是程序运行时的实体,不会给他们分配内存空间,因此,对其初始化没有意义。

    编程要求

    补充代码,将测试输入信息存入结构体中,完成输出成绩较高的学生的学号,姓名和成绩。

    测试说明

    平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部计算正确才能通过测试:

    测试输入:

    14308101 xiaowang 99
    15408122 xiaoli 78

    预期输出:

    14308101 xiaowang 99

    测试输入数据说明:

    输入包含两行,每行包含学生的学号(8位的整数),姓名(字符串,长度不超过20)和成绩(整数)。

    代码如下

    #include<stdio.h>
    #include<stdlib.h>
    int main()
    {
    	struct  student
    	{
    		int num;
    		char name[20];
    		int score;
    	}student1,student2;
      scanf("%d%s%d",&student1.num,student1.name,&student1.score);
      scanf("%d%s%d",&student2.num,student2.name,&student2.score);
      if(student1.score>student2.score)
      printf("%d %s %d\n",student1.num,student1.name,student1.score);
      else  if(student1.score<student2.score) 
      printf("%d %s %d\n",student2.num,student2.name,student2.score);
      else
      {printf("%d %s %d\n",student1.num,student1.name,student1.score);
       printf("%d %s %d\n",student2.num,student2.name,student2.score);
      }
      return 0;
    }
    
    
    展开全文
  • 1、首先咱们来了解关于结构体以及结构体数组的概念。自定义结构体:数组struct weapon{char name[20];int atk;int price;};它是"weapon"型(相似于咱们熟知的int型,String型等),里面有一个char类型,两个int类型。...

    1、首先咱们来了解关于结构体以及结构体数组的概念。

    自定义结构体:数组

    struct weapon{

    char name[20];

    int atk;

    int price;

    };

    它是"weapon"型(相似于咱们熟知的int型,String型等),里面有一个char类型,两个int类型。3d

    如何给这个结构体赋值以及访问里面的属性?指针

    struct weapon weapon_1 = {"weapon_name",100,200};

    printf("%s\n,%d\n",weapon_1.name,++weapon_1.price);

    "weapon weapon_1"表示咱们实例化了weapon类型的一个具体的对象,咱们给它起名为“weapon_1”(类型于int a),而且咱们给“weapon_1”赋了三个值{"weapon_name",100,200},这三个值分别对应结构体里的char name[20],int atk,int price。code

    完整代码以下:对象

    #include

    struct weapon{

    char name[20];

    int atk;

    int price;

    };

    int main()

    {

    struct weapon weapon_1 = {"weapon_name",100,200};

    printf("%s\n,%d\n",weapon_1.name,++weapon_1.price);

    return 0;

    }

    运行结果:blog

    a98328b87f4c48d3b44670f231eaa59a.gif

    什么是结构体数组?io

    struct weapon weapon_2[2] = {{"weapon_name1",50,100},{"weapon_name2",100,200}};

    printf("%s %d\n",weapon_2[0].name,weapon_2[1].atk);

    struct weapon weapon_2[2]中[2]表示这个数组的大小是2。class

    完整代码以下:变量

    #include

    struct weapon{

    char name[20];

    int atk;

    int price;

    };

    int main()

    {

    struct weapon weapon_1 = {"weapon_name",100,200};

    printf("%s %d\n",weapon_1.name,++weapon_1.price);

    struct weapon weapon_2[2] = {{"weapon_name1",50,100},{"weapon_name2",100,200}};

    printf("%s %d\n",weapon_2[0].name,weapon_2[1].atk);

    return 0;

    }

    运行结果:im

    a98328b87f4c48d3b44670f231eaa59a.gif

    2、指向结构体变量的指针变量

    先上代码:

    struct weapon weapon_1 = {"weapon_name",100,200};

    printf("%s %d\n",weapon_1.name,++weapon_1.price);

    struct weapon * w;

    w = &weapon_1;

    printf("name = %s name = %s\n",(*w).name,w->name);//w->name weapon_1.name

    首先咱们先定义一个指向weapon类型的指针变量w,而后让w指向weapon_1,如今咱们能够经过指向结构体变量的指针w去访问weapon_1。

    值得注意的是(*w).name可简写成w->name,它们都表示weapon_1.name。

    完整代码以下:

    #include

    struct weapon{

    char name[20];

    int atk;

    int price;

    };

    int main()

    {

    struct weapon weapon_1 = {"weapon_name",100,200};

    printf("%s %d\n",weapon_1.name,++weapon_1.price);

    struct weapon * w;

    w = &weapon_1;

    printf("name = %s name = %s\n",(*w).name,w->name);//w->name weapon_1.name

    return 0;

    }

    运行结果:

    a98328b87f4c48d3b44670f231eaa59a.gif

    那么结构体数组呢?

    struct weapon weapon_2[2] = {{"weapon_name1",50,100},{"weapon_name2",100,200}};

    printf("%s %d\n",weapon_2[0].name,weapon_2[1].atk);

    struct weapon * p;

    p = weapon_2;//p->name weapon_2[0].name

    printf("%s\n",p->name);

    p++;//weapon_2 +1 weapon_2[1]

    printf("%s\n",p->name);

    能够注意到,“p = weapon_2”中不加“&”。“p = weapon_2”此时表示的是指针p指向的是weapon_2数组第一个元素的起始地址。

    若是咱们输出p->name,实际它表示的是weapon_2[0].name。

    若是想访问weapon_2数组中第二个元素的name成员,应该如何操做?

    咱们能够将p进行一个 ++的操做,则能够访问weapon_2[1].name。

    完整代码以下:

    #include

    struct weapon{

    char name[20];

    int atk;

    int price;

    };

    int main()

    {

    struct weapon weapon_2[2] = {{"weapon_name1",50,100},{"weapon_name2",100,200}};

    printf("%s %d\n",weapon_2[0].name,weapon_2[1].atk);

    struct weapon * p;

    p = weapon_2;//p->name weapon_2[0].name

    printf("%s\n",p->name);

    p++;//weapon_2 +1 weapon_2[1]

    printf("%s\n",p->name);

    return 0;

    }

    运行结果:

    a98328b87f4c48d3b44670f231eaa59a.gif

    展开全文
  • 一、首先我们来了解关于结构体以及结构体数组的概念。 自定义结构体: struct weapon{ char name[20]; int atk; int price; }; 它是"weapon"型(类似于我们熟知的int型,String型等),里面有一个...

    一、首先我们来了解关于结构体以及结构体数组的概念。

    自定义结构体:

    struct weapon{
        char name[20];
        int atk;
        int price;
    };

    它是"weapon"型(类似于我们熟知的int型,String型等),里面有一个char类型,两个int类型。

    如何给这个结构体赋值以及访问里面的属性?

        struct weapon weapon_1 = {"weapon_name",100,200};
        printf("%s\n,%d\n",weapon_1.name,++weapon_1.price);

    "weapon weapon_1"表示我们实例化了weapon类型的一个具体的对象,我们给它起名为“weapon_1”(类型于int a),并且我们给“weapon_1”赋了三个值{"weapon_name",100,200},这三个值分别对应结构体里的char name[20],int atk,int price。

    完整代码如下:

    #include<stdio.h>
    struct weapon{
        char name[20];
        int atk;
        int price;
    };
    
    int main()
    {
        struct weapon weapon_1 = {"weapon_name",100,200};
        printf("%s\n,%d\n",weapon_1.name,++weapon_1.price);
        return 0;
    }
    

    运行结果:

    什么是结构体数组?

        struct weapon weapon_2[2] = {{"weapon_name1",50,100},{"weapon_name2",100,200}};
        printf("%s  %d\n",weapon_2[0].name,weapon_2[1].atk);

    struct weapon weapon_2[2]中[2]表示这个数组的大小是2。

    完整代码如下:

    #include<stdio.h>
    struct weapon{
        char name[20];
        int atk;
        int price;
    };
    
    int main()
    {
        struct weapon weapon_1 = {"weapon_name",100,200};
        printf("%s %d\n",weapon_1.name,++weapon_1.price);
    
        struct weapon weapon_2[2] = {{"weapon_name1",50,100},{"weapon_name2",100,200}};
        printf("%s %d\n",weapon_2[0].name,weapon_2[1].atk);
    
        return 0;
    }

    运行结果:

     二、指向结构体变量的指针变量

     先上代码:

        struct weapon weapon_1 = {"weapon_name",100,200};
        printf("%s %d\n",weapon_1.name,++weapon_1.price);
    
        struct weapon * w;
        w = &weapon_1;
        printf("name = %s  name = %s\n",(*w).name,w->name);//w->name weapon_1.name

    首先我们先定义一个指向weapon类型的指针变量w,然后让w指向weapon_1,现在我们可以通过指向结构体变量的指针w去访问weapon_1。

    值得注意的是(*w).name可简写成w->name,它们都表示weapon_1.name。

    完整代码如下:

    #include<stdio.h>
    struct weapon{
        char name[20];
        int atk;
        int price;
    };
    
    int main()
    {
        struct weapon weapon_1 = {"weapon_name",100,200};
        printf("%s %d\n",weapon_1.name,++weapon_1.price);
    
        struct weapon * w;
        w = &weapon_1;
        printf("name = %s  name = %s\n",(*w).name,w->name);//w->name weapon_1.name
    
        return 0;
    }
    

    运行结果:

    那么结构体数组呢?

        struct weapon weapon_2[2] = {{"weapon_name1",50,100},{"weapon_name2",100,200}};
        printf("%s  %d\n",weapon_2[0].name,weapon_2[1].atk);
    
        struct weapon * p;
        p = weapon_2;//p->name weapon_2[0].name
        printf("%s\n",p->name);
        p++;//weapon_2 +1 weapon_2[1]
        printf("%s\n",p->name);

    可以注意到,“p = weapon_2”中不加“&”。“p = weapon_2”此时表示的是指针p指向的是weapon_2数组第一个元素的起始地址。

    如果我们输出p->name,实际它表示的是weapon_2[0].name。

    如果想访问weapon_2数组中第二个元素的name成员,应该如何操作?

    我们可以将p进行一个 ++的操作,则可以访问weapon_2[1].name。

    完整代码如下:

    #include<stdio.h>
    struct weapon{
        char name[20];
        int atk;
        int price;
    };
    
    int main()
    {
        struct weapon weapon_2[2] = {{"weapon_name1",50,100},{"weapon_name2",100,200}};
        printf("%s  %d\n",weapon_2[0].name,weapon_2[1].atk);
    
        struct weapon * p;
        p = weapon_2;//p->name weapon_2[0].name
        printf("%s\n",p->name);
        p++;//weapon_2 +1 weapon_2[1]
        printf("%s\n",p->name);
    
        return 0;
    }
    

    运行结果:

    展开全文
  • 【C语言】结构体变量定义、初始化、使用

    千次阅读 多人点赞 2021-02-28 23:43:13
    前言 本文中出现的 strcpy()函数需引入 string.h 头文件。 #include <string.h> ...其中 struct 是声明结构体...二、定义结构体变量 structstudents 整体是“结构体类型名”,在定义结构体类型的变量时,s...
  • c语言结构体学习整理(结构体初始化结构体指针)

    万次阅读 多人点赞 2018-11-01 20:22:12
    首先我们为什么要用到结构体,我们都已经学了很多int char …等类型还学到了同类型元素构成的数组,以及取上述类型的指针,在一些小应用可以灵活使用,然而,在我们实际应用中,每一种变量进行一次声明,再结合起来...
  • 定义:结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构。 声明一个结构体类型的形式是: 代码如下:struct Student{ //声明一个结构体类型Student int num; //声明一个整形变量num ...
  • 结构体变量定义和初始化的方式

    千次阅读 2019-10-22 21:14:52
    定义结构体变量有三种方式: (1) 用结构体类型定义变量 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include <stdlib.h> #include <string.h> struct Teacher { int age; ...
  • 1.结构体的介绍 c语言结构体(struct)从本质上讲是一种自定义的数据类型,只不过这些数据比较复杂,是由int ,char,float等基本类型组成的。...2.结构体的声明和初始化 #define _CRT_SECURE_NO_WARNINGS 1 #incl.
  • 1. 提问与复习 2. 考虑一个学生的信息,(考虑家长通知书上的成绩单问题) 3. 将第二步的数据定义为结构体类型(student)变量 stu,进行同样的操作
  • C++结构体类型的定义和初始化 有时需要将不同类型的数据组合成一个有机的整体,以供用户方便地使用。这些组合在一个整体中的数据是互相联系的。例如,一个学生的学号、姓名、性别、年龄、成绩、家庭地址等项,都是这...
  • 优质高等教育大学课程相关文件资料,制作精美。
  • 了解结构体变量引用之后,下面演示一下如何定义后再初始化 #include<stdio.h> #include<string.h> struct AGE { int year; int month; int day; } struct STUDENT { char name[20]; int num; ...
  • 结构体的声明 struct tag{ member-list; }variable-list; 结构是一些值的集合,这些值称为成员变量.结构的每个成员可以是不同类型的变量. 先来看一个例子,假如我们现在想要描述一个学生: struct stu{ char name[20...
  • C++结构体变量初始化 C++对结构体变量可以在定义时指定初始值。 struct Student{ //自定义结构体变量 int num;//学号 char sex;//性别 int age;//年龄 }studeng1={1001,'M',24}; C++结构体变量引用 C++...
  • 一、结构体的定义 定义格式为: struct <结构体类型名> { <成员表> }; //分号结束定义 例如: struct student{ long number; char name[20]; char sex; float score; }; 在这个结构体定义中,...
  • 一、结构体初始化 结构体初始化结构体不需要自定义初始化方法 如果我们的属性有默认初始值,编译器会提供不同的初始化⽅法 如果我们自定义初始化方法,编译器则不会帮我们生成初始化方法 1.结构体不需要...
  • 这个哪里错了呢?
  • 本磕碜全面介绍C语言精华内容,如何利用C语言进行程序设计的方法,触及各种常用C语言语法,详细解释了理论实践结合,举例恰到好处,坑点全部强调到位 任务作业: 若有如下语句: int *po...
  • 上一篇文章:返回指针值的函数+指向函数的指针+... 结构体引例结构体变量的定义结构体变量的使用结构体变量作为函数参数结构体变量初始化 下一篇文章 结构体 引例 输出平均分最高的学生信息 #include &...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 64,132
精华内容 25,652
热门标签
关键字:

结构体变量的初始化和引用