精华内容
下载资源
问答
  • 定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年的问题。 2.编写一个函数print, 打印一个学生的成绩数组, 该数组中有5个学生的数据记录,每个记录包括num,name,score[3],用主函数输入...
  • 2、结构体的目的是为了描述一个对象,为了把一个对象描述清除必须要所出这个对象的很多属性,而为了表示这些属性就要用到不同的变量,而且变量不止一个。 二、如何来定义结构体: 1、定义结构体 格式: struct 结构体...

    结构体

    一、什么是结构体:

    1、不同类型的变量集合被称为结构体
    2、结构体的目的是为了描述一个对象,为了把一个对象描述清除必须要所出这个对象的很多属性,而为了表示这些属性就要用到不同的变量,而且变量不止一个。

    二、如何来定义结构体:

    1、定义结构体
    格式:

    struct 结构体{
    	属性列表 
    };
    

    比如:定义一个结果体,目的是为了描述一个工人

    struct worker {
    	char id[10];
    	char name[10];
    	char sex[10];
    	int pay;	
    }
    

    2、如何来定义结构体变量

    1)上方那样定义的只是结构体的类型,并不是变量

    比如:

    int a;//其中int 是类型  而a是变量
    

    2)在C程序里面有几种类型是C已经为我们做好的,我们只要拿来使用就行了,但是结构体类型在C程序里面没有,就需要用户自己来定义。

    3)下方程序当中struct worker是定义的类型

    struct worker {
    	char id[10];
    	char name[10];
    	char sex[10];
    	int pay;	
    }
    

    在这里插入图片描述

    4)定义结构体变量有三种方式
    (a)在定义类型的时候就定义结构体变量,这样的变量就相当于全局变量。
    (b)在定义结构体类型之后,再定义结构体变量。
    (c)可以在定义结构体类型 的时候,省略结构体类型名 (一般不用)

     struct {//定义结构体类型 
    	char id[10];//定义工号
    	char name[10];//定义姓名
    	char sex[10];//定义性别
    	int pay;//定义基本工资
    },wi,w2;//此处的分号不能少
    

    (d)可以通过typedfed这个关键字,为结构体变量取别名别名一般用大写

    在这里插入图片描述

    三、如何给结构体变量赋初值

    在这里插入图片描述

    四、如何来输出结构体变量的值

    1、由于结构体变量里面会包含有很多的属性,所以在输出时,一定要分别输出,不能整体输出
    2、结构体变量名.成员

    #include<stdio.h> 
    typedef struct worker{//定义结构体类型 
    	char id[10];//定义工号
    	char name[10];//定义姓名
    	char sex[10];//定义性别
    	int pay;//定义基本工资
    }WOR;//此处的分号不能少
    void main(){
    	WOR w1={"0001","狄文杰","男",1200},w2={"0002","张三丰","女",500},w3;//w1和w2它们的属性相同但是属性值不相同。 
    	printf("%s,%s,%s,%d",w1.id,w1.name,w1.sex,w1.pay);//只能够分别输出不能够整体输出 
    } 
    

    在这里插入图片描述
    以下赋值方式也是可以的

    
    //一个一个的将w1的值赋值给w3 
    	w3.id=w1.id;
    	w3.name=w1.name;
    	w3.pay=w1.pay;
    	w3.sex=w1.sex;
    

    3、结构体变量虽然不能整体输出,但是可以整体赋值
    在这里插入图片描述

    
    
    展开全文
  • 9.1 定义和使用结构体变量 9.1.1 自己建立结构体类型 在实际生活中,有些数据是有内在联系的,成组出现的。例如,一个学生的学生、姓名、性别、年纪、成绩和家庭地址等项,是属于一个学生的。人们希望把这些数据...

    9.1  定义和使用结构体变量

    9.1.1  自己建立结构体类型

    在实际生活中,有些数据是有内在联系的,成组出现的。例如,一个学生的学生、姓名、性别、年纪、成绩和家庭地址等项,是属于一个学生的。人们希望把这些数据组成一个组合数据。

    C语言允许用户建立由不同类型数据组成的组合型的数据结构,它称为结构体(strcutre)。

    根据学生的信息数据结构,在程序中自己建立一个结构体类型

    #include<stdio.h>
    int main(){
    	struct Student{
    		int num;
    		char name ;
    		char sex;
    		int age;
    		float score;
    		char addr[30];
    	};
    
    	return 0;
    }

    程序分析:上面由程序设计者指定了一个结构体的类型struct Student(struct是声明结构体类型时必须使用的关键字, 不能省略),struct Student就是在本程序中可以使用的合法类型名。它向编译系统声明:这是一个“结构体类型”,它包括num,name,sex,age,score,addr等不同类型的成员。

    声明结构体类型的一般形式为:

    struct 结构体名

    {成员列表};

    注意:1.结构体类型的名字是由一个关键字struct和结构体名组合而成的(例如struct Student)。2.结构体名是由用户指定的,又称“结构体标记”,以区别其他结构体类型。上面声明中Student就是结构体名(结构体体标记)。

    花括号内是该结构体所包括的子项,成为结构体的成员。上例中num,name,sex等都是成员,对各项成员都应进行类型声明,即:

    类型名 成员名;

    “成员表列”也称“域表”,每一个成员是结构体中的一个域。成员名命名规则与变量名相同。

    int main(){
    struct Date {
    		int year;
    		int month;
    		int day;
    		
    	};
    	struct Student {
    		int num;
    		char sex;
    		int age;
    		struct Date birthday;
    		char addr[30];
    
    	};
    	return 0;
    }

    先声明一个struct Date类型,它代表“日期”,包括3个成员;year,month,day。然后再声明struct Student类型时,将birthday指定为struct Date类。

    struct Student的结构如图所示。

    9.1.2  定义结构体类型变量

    上一小节中只是建立了一个结构体类型,它相当与一个模型,并没有定义变量,其中也无具体数据,系统自然也不分配存储单元。

    为了能再程序中使用结构体类型的数据,应当定义结构体类型的变量,并在其中存放具体的数据。

    可以采取以下三种方法定义结构体类型变量

    1.先声明结构体类型,再定义该类型的变量

    struct Student studen1, student2;
    //struct Student 是结构体类型
    //student1,student2是结构体变量名

    这种定义方式和其他的变量形式(如 int a,b;)是相似的。在声明类型后可以随时定义变量,比较灵活。

    2.在声明类型的同时定义变量

    struct Student {
    		int num;
    		char sex;
    		int age;
    		struct Date birthday;
    		char addr[30];
    
    	}studen1, student2;

    这种定义方法一般形式为:
    struct 结构体名

    {

    成员表列

    }变量名表列;

    3.不指定类型名而直接定义结构体类型变量

    其形式一般为:

    struct 

    {

    成员表列

    }变量名表列;

    指定了一个无名的结构体类型,它没有名字(不出现结构体名)。显然不能再以此结构体类定义其他变量。这种方式用的不多。

    说明:

    1. 结构体类型结构体变量是不同的概念。只能对变量进行赋值,存取或运算,而不能对类型进行赋值,存取或运算。类型不分配内存,变量分配内存。
    2. 结构体类型中的成员名可以与程序中的变量名相同,但二者不代表同一个对象。
    3. 对结构体变量中的成员(即“域"),它可以单独使用,它的作与地位相当于普通变量。

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

    在定义结构体变量时,可以对它进行初始化,即赋予初始值。

    #include<stdio.h>
    int main(){
    	struct Student {
    		int num;
    		char sex;
    		int age;
    		char addr[30];
    
    	}student1 = { 193060101, 'M', 18, "安徽芜湖,起飞" };
    	printf("Student信息:\n num%d\n sex=%c\n age=%d\n addr=%s\n", student1.num, student1.sex,student1.age,student1.addr);
    	return 0;
    }

    运行结果如下:

     
    程序分析:

    在定义变量的同时,进行初始化。在变量名student1后面的花括号中提供各成员的值。student1.num表示变量student1中的变量num成员,同理student1.sex表示成员sex。

    1. 在定义结构体变量时可以对它的成员初始化。初始化列表是用花括号括起来的一些常量。注意:是对结构体变量初始化,而不是对结构体类型初始化。
      struct Student student2 ={.num="111111"};
      //对某一成员初始化。
    2. 可以引用结构体变量中成员的值,引用方式为结构体变量名.成员名。在程序中可以对变量成员进行赋值例如:student1.num =10000;只能对结构体变量的成员分别进行输入和输出。
    3. 如果成员本身是一个结构体类型,则要用若工个成员运算符,一级一级地找到最低一级地成员。
      #include<stdio.h>
      int main(){
      	
      	struct Date {
      		int year;
      		int month;
      		int day;
      		
      	};
      	struct Student {
      		int num;
      		char sex;
      		int age;
      		char addr[30];
      		struct Date birthday;
      	}student1 = { 193060101, 'M', 18, "安徽芜湖,起飞", {2021,6,2} };
      	
      	printf("Student信息:\n num%d\n sex=%c\n age=%d\n addr=%s\n year = %d\n month = %d\n day = %d\n", student1.num, student1.sex, student1.age, student1.addr, student1.birthday.year, student1.birthday.month, student1.birthday.day );
      	return 0;
      }

      运行结果如下:

      成员是结构体引用方式是下面

      student1.num  (结构体变量student1中的成员num)

      student1.birthday.year (结构体变量student1中的成员birthday的成员year)  

    4. 对于结构体变量的成员可以像普通变量一样进行各种运算(根据其类型决定可以进行的运算) “.”运算符的优先级最高。

    5. 同类结构可以互相赋值。

    6. 可以引用结构体变量成员的地址,也可以引用结构体变量的地址 
    scanf("&d",&student1.num);  //输入student1.num的值
    printf("%o",&student1);     //输入结构体变量student1的起始地址

    说明:结构体变量的地址主要用作函数参数,传递结构体变量的地址。

    例题 :输入两个学生的学号、姓名和成绩,输出成绩较高的学生的学号、姓名和成绩。

    int main(){
    	struct student{
    		int num;
    		char name[10];
    		int score;
    	};
    	struct student student1 = { 193060101, "zhangsan", 98 };
    	struct student student2 = { 193060102, "lisi", 94 };
    	printf("%3d%6s%3d\n", student1.num, student1.name, student1.score);
    	printf("%3d%6s%3d\n", student2.num, student2.name, student2.score);
    	if (student1.score > student2.score){
    		printf("成绩最高的是%d\n%s\n%d\n", student1.num, student1.name, student1.score);
    	}
    	else if (student1.score == student2.score){
    		printf("%d\n%s\n%d\n", student1.num, student1.name, student1.score);
    		printf("%d\n%s\n%d\n", student2.num, student2.name, student2.score);
    	}
    	else{
    		printf("成绩最高的是%d\n%s\n%d\n", student2.num, student2.name, student2.score);
    	}
    
    	return 0;
    
    }

    运行结果如下:

     

    程序分析:

    1. student1和student2是struct studnet类型的变量,在3个成员中分别存放学号、姓名、成绩。
    2. 根据student1.score和student2.score的比较结果,输出不同的学生的信息。从这里可以看到利用结构变量的好处:由于studnet1是一个组合项,如果确定成员student1.score是成绩较高的,则输出试图student1的全部信息是轻而易举的,因为它们本来是互相关联,捆绑在一起的。如果用普通变量就难以方便实现这一目的。

     

    展开全文
  • C/C++定义结构体变量

    2020-08-04 09:32:51
    这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、...

    C:

    struct student 
    {
    	char name[20];
    	int age;
    	int number;
    };
    struct student stu1;
    /*******************************************/
    typedef struct student //student 可以省略
    {
    	char name[20];
    	int age;
    	int number;
    }stu;
    stu stu1;
    

    C++:

    struct student 
    {
    	char name[20];
    	int age;
    	int number;
    };
    student stu1;//c++中可以直接省略struct
    

    个人觉得c++这方面做得更好,似乎可以将定义的结构体看做一种数据类型,以"数据类型"+"变量"的形式定义结构体变量。

    展开全文
  • c语言----定义和使用结构体变量

    千次阅读 多人点赞 2018-08-16 11:22:45
    由于一个数组中只能存放同一种类型的数据,很不方便,所以C语言允许用户自己建立由不同类型数据组成的组合型的数据结构,也就是结构体,通俗讲就像是打包封装,把一些有共同特征(比如同属于某一类事物的属性,往往...

    1.结构体类型

    由于一个数组中只能存放同一种类型的数据,很不方便,所以C语言允许用户自己建立由不同类型数据组成的组合型的数据结构,也就是结构体,通俗讲就像是打包封装,把一些有共同特征(比如同属于某一类事物的属性,往往是某种业务相关属性的聚合)的变量封装在内部,通过一定方法访问修改内部变量。

    声明一个结构体类型的一般形式是

    stuct 结构体名
        {成员列表};

    这样只是建立了一个结构体类型,相当于一个模型,并没有定义变量,其中并没有具体数据,系统也不对之分配内存单元。可以采用以下三种方法定义结构体类型变量。

    2.结构体类型变量

    • 先声明结构体类型,再定义该类型变量。
    struct student
    {
        int num;
        char name[20];
        char sex;
        int age;
    }
    struct student S1,S2;
    • 在声明定义的同时定义变量
    struct student
    {
        int num;
        char name[20];
        char sex;
        int age;
    }S1,S2;
    •  不指定类型名直接定义结构体变量
    struct
    {
        int num;
        char name[20];
        char sex;
        int age;
    }S1,S2;

    指定了一个无名的结构体类型,它没有名字(不出现结构体名字),显然不能再用这个结构体类型去定义其他变量,这种方式用的不多。

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

    #include <stdio.h>
    int main()
    {
        struct student
        {
            int num;
            char name[20];
            char sex;
            int age;
         }S1={1001,"zhangsan","M",18};
         printf("NO.:%d\name:%s\sex%c\age:%d\n",S1.num,S1.name,S1.sex,S1.age);
         return 0;
    }

    (1)在定义结构体变量时可以对它的成员初始化,初始化列表时用花括号括起来的一些常量,这些常量依次赋值给结构体变量中的各成员,注意:是对结构体变量初始化,而不是对结构体类型初始化。

    (2)引用结构体变量中成员的值:结构体变量名.成员名。“.”是成员运算符,在所有的运算符中优先级最高。

    • 不能企图输出结构体变量名来输出结构体的所有成员,只能分别输出各个成员的值
    • 结构体变量成员可以像普通变量一样进行运算
    • 同类的结构体变量可以相互赋值
    • 可以引用结构体变量成员的地址,也可以引用结构体变量的地址,主要用作函数参数,传递结构体变量地址;
    展开全文
  • 一、自己建立结构体类型 1.C语言中允许用户自己建立由不同类型数据组成的组合型的数据结构,它成为结构体。 2.一般形式 struct 结构体名 ...成员表列也称为域表,每一个成员是结构体中的一个域。 6.成...
  • 方法: #include<stdio.h> struct Date { int year; int month; int day; }; int main() { struct Date p; scanf("%d%d%d", &p.year, &p.month, &p.day); int a[12] = {31,28,31,30,31,30...
  • 定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。 例如 输入 2000 12 31 输出 366 C代码 #include<stdio.h> struct time { int year; int mouth; int day; }; int main...
  • 刚入门 程序写的好长~
  • #include <iostream> #include <cstring> using namespace std; struct datea{ int year; int month; int day; }; int main(){ int print(datea &); int days; datea d;...<...
  • 定义结构体变量的几种方式

    千次阅读 2018-02-07 13:36:59
    首先要注意区分结构体类型和结构体变量,结构体类型是用户为满足需要自己声明的种类型,相当于事先准备好的框架,而结构体变量则是使用之前准备好的结构体类型定义的,可以类比“int a; float b;”其中的a,b则是...
  • 输入三学生的个人信息 包含学号 姓名和三门学科的成绩 输出平均成绩最高的学生的学号 姓名 各科成绩以及平均成绩 代码如下(谭浩强c程序设计的例子)#include&lt;stdio.h&gt;struct Student {int num; ...
  • ①先定义结构体类型,再定义结构体变量 ②在定义结构体类型的同时,定义结构体变量 ③直接定义结构体变量 三、结构体变量的内存分配 四、结构体变量的初始化 五、结构体变量的引用 、结构体类型定义 结构体...
  • int days = 0;//存储所有的天数  //根据月份进行匹配    //原则:每月只加上前一个月的天数  switch (date.month) {  case 12:  days += 31;    case 11:  days += 30;  
  •  问题十五:定义一个结构体变量(包括年、月、日),输入两个人的生日,求出他们相差多少天。 */ #include    struct date  {  int year;  int month;  int day;  }; int ...
  • 01 结构体概念 结构体(struct)是由系列具有相同类型或不同类型的数据构成的数据集合,叫做结构体。 在C语言中,结构体(struct)指的是种数据结构,是C语言...C 数组允许定义可存储相同类型数据项的变量结构体
  • 定义一个结构体变量,为其成员赋初始值0,随后修改变量的三个成员为25,liming,88,随后在屏幕上打印这个变量的三个成员值。 例如: typedef struct_STUINFO{ int nNum; char szName[20]; int ...
  • C语言 | 结构体变量

    2021-04-29 08:41:58
    C语言结构体类型 C语言中允许用户自己建立由不同类型数据组成的组合型的数据结构,它称为结构体。...成员表列也称为域表,每一个成员是结构体中的一个域,成员命名规则与变量名相同。 C语言如何定义结构
  • 定义一个结构体来描述一个学生的信息(学号/名字/成绩/出生日期) 再从键盘中输入5个学生的信息,假设按成绩的降序依次输出每个 学生的信息。 #include <stdio.h> #include <stdlib.h> struct date {...
  • 结构体变量的初始化和引用

    千次阅读 2021-01-21 18:28:37
    结构体变量的初始化和引用 任务描述 本关任务:从键盘输入两个学生的学号,姓名和成绩(整数),分别存入结构体中,输出成绩...例如,以下是一个描述学生信息的结构体类型定义: struct student { long number; char
  • 定义结构体

    千次阅读 2017-11-16 13:17:02
    一:宏定义 1、不带参数的宏定义:   #define 标识符 字符串 例如:#define PI 3.1415926 说明:   (1)宏名一般习惯用大写字母... (3)宏定义是用宏名代替一个字符串,也就是做简单的置换,并不做正确性检查
  • C#结构体类型变量定义与初始化

    千次阅读 2020-06-09 13:27:30
    C#中结构体类型变量称为对象或称为结构实例。 定义结构体类型变量称为把结构体类型实例化,这时会根据 ...每个结构体变量都有自己独立的存储空间,每个变量都有自 己的数据副本,对一个变量的操作不会影响另一个
  • 这篇文章主要介绍了C++中的指针结构体数组以及指向结构体变量的指针的用法,是C++入门学习中的基础知识,需要的...定义结构体数组和定义结构体变量的方法相仿,定义结构体数组只需声明其为数组即可。如: struct Stude
  • [C++] 结构体Struct类型和变量定义

    千次阅读 2020-09-08 18:12:32
    //定义一个结构体类型 //定义一个数据类型,固定大小内存块的别名,还没有分配内存 struct Teacher { int age; }; void main() { struct Teacher Zhang; //告诉C编译器给我分配内存 } 注意:这里不能省略struct ...
  • C语言结构体(5) 结构体指针变量

    千次阅读 2020-03-30 16:13:17
    那么,结构体类型是用户自己定义的数据类型,同样也可以定义指针变量结构体类型定义指针变量格式如下: struct 结构体类型名* 指针变量名; 定义指针变量的格式与基本数据类型定义指针变量格式一样。例如前面...
  • 结构体变量

    千次阅读 2017-03-02 09:04:49
    (1)在32位系统中,存储任何一个指针所占用的内存都为四个字节。 (2)不同类型的指针步长不一样。 2 指针变量和指针所指向的内存空间变量是两个不同的概念 二 结构体变量名是指针所指向的内存空间变量,数组...
  • 一个结构体变量的指针就是该变量所占据的内存段的起始地址。可以设一个指针变量,用来指向一个结构体变量,此时该指针变量的值是结构体变量的起始地址。指针变量也可以用来指向结构体数组中的元素。 声明一个...
  • C++指向结构体变量的指针

    千次阅读 2017-04-05 19:42:33
    有时需要将不同类型的数据组合成一个有机的整体,以供用户方便地使用。这些组合在一个整体中的数据是互相联系的。例如,一个学生的学号、姓名、性别、年龄、成绩、家庭地址等项,都是这个学生的属性,见图7.1。 ...
  • 结构体结构体数组的定义

    千次阅读 2020-07-19 23:29:15
    1.结构体 结构体是用户自定义的可用的数据类型,它允许您存储不同类型的数据项。...定义结构体变量: struct STU stu1,stu2; (2)定义了一个结构体STU的同时定义了两个结构体STU的变量stu2,stu3。 struct

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 76,968
精华内容 30,787
关键字:

当用户定义一个结构体变量时