精华内容
下载资源
问答
  • 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、结构体变量虽然不能整体输出,但是可以整体赋值
    在这里插入图片描述

    
    
    展开全文
  • C语言结构体结构体引例结构体变量定义结构体变量的使用结构体变量作为函数参数结构体变量的初始化 结构体 引例 输出平均分最高的学生信息 #include <stdio.h> struct student { int num; char name[10]; ...

    上一篇文章:返回指针值的函数+指向函数的指针+main()函数的参数

    C语言结构体类型定义+结构体变量的定义与使用及其初始化+结构体变量作为函数参数

    结构体

    引例

    输出平均分最高的学生信息

    #include <stdio.h>
    struct student
    {
    	int num;
    	char name[10];
    	int computer,english,math;
    	double average;//这些都是结构体成员
    };//注意这个分号不要可少,否则会报错
    int main()
    {
    	int i,n;
    	struct student s1,max;//定义结构体变量s1和结构体变量max
    	printf("Input n:");
    	scanf("%d",&n);//n是学生的个数
    	printf("Input the student's number, name and course scores:\n");
    	for(i=1;i<=n;i++)//用for循环实现n个学生成绩的输入
    	{
    		printf("No.%d:",i);//提示学生的序号
    		scanf("%d%s%d%d%d",&s1.num,s1.name,&s1.math,&s1.english,&s1.computer);
    		//分别给结构体里面的变量输入数值
    		s1.average=(s1.math+s1.english+s1.computer)/3.0;//计算出该学生的平均成绩
    		if(i==1)max=s1;
    		if(max.average<s1.average)//找出平均分最高的学生
    			max=s1;//将s1里面的成员变量的值分别对应地赋值给max
    	}
    	printf("num:%d, name:%s, average:%.2lf\n",max.num,max.name,max.average);
    	//将平均成绩最高的学生成绩输出
    	return 0;	
    }
    
    • 结构体类型的定义:
      结构体类型实际上是一种模板,它的定义形式为:
    struct 结构体名
    {
    	类型标识符 结构体成员名1;
    	类型标识符 结构体成员名2;
    	...
    	类型标识符 结构体成员名3;
    };//最后的这个分号不要忘了
    

    注意不要忘记最后的分号

    结构体变量的定义

    在结构体类型定义好的情况下,注意是结构体类型定义好的情况下,才能定义结构体变量。
    比如:

    struct student
    {
    	int num;
    	char name[10];
    	int computer,english,math;
    	double average;
    };
    

    这个是结构体类型的定义,然后才能进行结构体变量的定义:

    struct 结构体类型名 结构体变量名;
    
    struct student stu1,stu2;//定义两个结构体变量
    

    也可以在定义结构体类型的时候同时定义结构体变量,如:

    struct student
    {
    	int num;
    	char name[10];
    	int computer,english,math;
    	double average;
    }stu1,stu2;//定义两个结构体变量;
    

    也可以省略结构体类型名,如:

    struct//省去了结构体类型的名字student
    {
    	int num;
    	char name[10];
    	int computer,english,math;
    	double average;
    }stu1,stu2;//定义两个结构体变量;
    

    省略了结构体类型的名字,在这种情况下,结构体变量只能在后面同时定义,而不能在主函数中定义。所以并不建议这样定义结构体变量

    • 注意:结构体变量的变量名和成员名可以相同,二者互不影响,互不干扰,如:
    struct date
    {
    	int year;
    	int month;
    	int day;
    };
    int main()
    {
    	struct date year;
    	year.year = 1980;
    }
    

    结构体变量的使用

    使用形式为:结构体变量.结构体成员名

    scanf("%d%s%d%d%d",&s1.num,s1.name,&s1.math,&s1.english,&s1.computer);
    
    • 注意:如果结构体类型中有字符数组成员,并且在主函数中要给字符数组赋字符串常量时,不能直接用“=”,即s1.name="张三";是错误的,必须使用字符串复制函数strcpy()函数来实现,如:strcpy(s1.name,"张三");
      在这里插入图片描述
      在这里插入图片描述
    • 同一类型的结构体变量间可以赋值
      如:stu2=stu1;将结构体变量stu1里面的所有成员变量的值分别对应赋给结构体变量stu2

    结构体变量作为函数参数

    • 结构体变量的成员作为函数的实参形参为普通变量或数组
    • 也可以将结构体变量作为函数的参数
      例如:(请看代码中的详细注释,并观察运行结果)
    #include <stdio.h>
    #include <string.h>
    struct s_score
    {
    	int no;
    	char name[10];
    	int score[3];
    };//不要忘记这个分号
    void output(struct s_score a);//形参为结构体变量
    void fun(int *q);//形参为指针 
    main()
    {
    	struct s_score a={1001,"zhangsan",{60,60,60}};//这行语句是对结构体变量的初始化
    	output(a);
    	a.no=1001;
    	strcpy(a.name,"wang lin");
    	a.score[0]=78;
    	a.score[1]=88;
    	a.score[2]=94;
    	output(a);
    	fun(a.score);//结构体中的数组成员,数组名为数组首地址 
    	output(a);
    }
    void output(struct s_score a)//将结构体变量作为形参接收来自主函的结构体变量 
    {
    	int i;
    	printf("%d  %s   ",a.no,a.name);
    	for(i=0;i<3;i++)
    		printf("%4d",a.score[i]);
    	printf("\n");
    }
    void fun(int *p)//定义指针变量来接收主函数传入的数组首地址 
    {
    	int i;
    	for(i=0;i<3;i++)
    	{
    		*(p+i)+=10;//通过循环变量i来对指针变量进行运算 
    		if(*(p+i)>100)
    			*(p+i)=100;
    	}
    }
    

    结构体变量的初始化

    结构体变量的初始化一般形式为:
    结构体变量名={初值表};
    就像上面的语句:

    struct s_score a={1001,"zhangsan",{60,60,60}};
    

    结构体初值的数据类型,应与结构体变量中相应成员所要求的一致,否则会出错



    后面的博客还会对结构体进行补充

    下一篇文章

    C语言结构体数组+结构体类型指针+指向结构体数组的指针+typedef类型

    展开全文
  • 当我们定义了结构体类型之后,可以使用结构体类型来定义变量定义变量的格式的方式与基本数据类型定义变量一样。假设我们定义了如下的结构体类型: //定义结构体类型 struct reader { //定义结构体的成员; ...

           当我们定义了结构体类型之后,可以使用结构体类型来定义变量,定义变量的格式的方式与基本数据类型定义变量一样。假设我们定义了如下的结构体类型:

    //定义结构体类型

    struct reader

    {

        //定义结构体的成员;

        char name[32];

        int age;

        int number;

    };

           我们可以用该结构体类型来定义变量,如下:

    struct reader r1; //定义结构体变量

           那么,我们可以在定义结构体变量的时候,对其进行初始化,如下:

    //定义结构体变量, 并初始化;

    struct reader r1 = {"www123", 100, 199};

           完整的测试例子如下:

           程序运行结果如下:

           可以看到,我们在定义变量r1的时候,在后面接着赋值运算符“=”,然后,接着需要赋值的数据。在大括号中存放赋值的数据,每个数据之间是有逗号“,”分隔开。

           我们还可以在定义结构体类型的时候就定义变量,同时对其进行初始化,如下:

    //定义结构体类型

    struct reader

    {

        //定义结构体的成员;

        char name[32];

        int age;

        int number;

    }r1, r2;

           此时,在定义struct reader结构体类型的时候,同时定义了变量r1和r2。而且,可以在定义变量的时候初始化,如下:

    //定义结构体类型

    //定义结构体类型

    struct reader

    {

        //定义结构体的成员;

        char name[32];

        int age;

        int number;

    }r1 = {"AAABBB", 99, 886}, r2 = {"www123", 100, 199};

           此时,定义struct reader结构体类型的时候,定义了变量r1和r2,而且,给变量r2初始化数据。程序测试代码如下:

           程序运行结果如下:

           可以看到,我们在定义sruct reader结构体类型的时候,定义了变量r1和r2,并且对它们进行了初始化。

           在定义结构体类型的过程中,我们可以省略“结构体类型名”,但是,这样定义的结构体类型就没有名称了,只能够在定义结构体类型的时候定义变量。例如:

    //定义结构体类型

    struct

    {

        //定义结构体的成员;

        char name[32];

        int age;

        int number;

    }r1, r2 = {"www123", 100, 199};

           此时,定义了一个结构体类型,但是,该结构体类型没有名称,所以,只能够在定义结构体的时候,定义变量。可以在定义变量的时候进行初始化。这种结构体定义类型的方式不是很推荐使用,我们只需要知道有这样的定义方式就可以了。在写代码的时候,我们都更应该给每个变量有一个明确、准确的类型名称。可以通过类型名称和变量名称,都可以知道定义这个类型和变量的一样。这样的代码才是优秀的代码。

    更多的交流可以访问:www.mylinux.vip   加QQ:1523520001,微信:13926572996,备注:linux编程;
    学习、分享更多的linux C/C++ 编程知识。
     

    展开全文
  • 1.C语言中使用typedef关键字来定义自己习惯的数据类型名称,也就是是为现有的类型取别名。 2.struct关键字能定义各种类型的集合...(指定一个无名结构体类型,显然不能再以次结构类型去定义变量,这种方式不常用) -

    1.C语言中使用typedef关键字来定义自己习惯的数据类型名称,也就是是为现有的类型取别名。

    2.struct关键字能定义各种类型的集合,称为结构,并把他们视为一个单元。

    3.结构体类型及其变量的不同定义方式:

    • 一般情况---------变量的定义方式为:struct 结构体名 变量名
     - ****struct  结构体名**
    {
    //成员列表
    }**
    
    • 无名结构体---------结构体变量和结构体同时定义
      (指定一个无名结构体类型,显然不能再以次结构类型去定义变量,这种方式不常用)
     - ****struct  **
    {
    //成员列表
    }变量名;**
    
    • 结构体变量和结构体同时定义
     - ****struct  结构体名**
    {
    //成员列表
    }变量名;**
    

    此时结构体没有别名,定义变量的形式为:struct 结构体名 变量名

     - ****typedef struct  结构体名**
    {
    //成员列表
    }**
    

    此时结构体有别名,可以直接用别名定义变量:别名 变量名
    也可以参照上一条没有别名的定义方式:struct 结构体名 变量名

     - ****typedef  struct 结构体名 **
    {
    //成员列表
    }别名;**
    
    • 直接使用别名定义结构体变量:别名 变量名
     - ****typedef struct  **
    {
    //成员列表
    }别名;**
    
    展开全文
  • 如果想在a.c中定义一个可以在b.c中可以使用的结构体变量,则可以参照一下方法: 首先在a.h中定义结构体和声明结构体变量,如: typedef struct struct_a { //结构体内容 } struct_a; extern struct_a aaa; 然后...
  • 结构体类型和变量定义及基本操作

    千次阅读 2019-08-10 00:29:47
    结构体定义 struct Teacher { char name[64]; int age; int id; }; void main() { struct Teacher t1; // 告诉C编译器给我分配内存 system("pause"); return; } 类型的重定义 typedef struct Teacher { ...
  • 结构体定义string变量

    千次阅读 2013-09-15 22:33:59
    我编写一个程序,在结构体定义了一个string类型类型的变量:如下: typedef struct GS_DB_Event_Item_Stru {  string strFieldName;  uint16 usType; //1 // 1 number, 2 string  union  {  int32 nValue...
  • 结构体定义与使用 结构体是一种构造数据类型 把不同类型的数据组合成一个整体 结构体定义形式: struct 结构体名{ 结构体所包含的变量或数组 }; 结构体是一种集合,它里面包含了多个变量或数组,它们的...
  • 由于经常要在函数中对结构体对象进行操作,所以函数形参中常常都是传值一个结构体指针变量,自己有时为了偷懒,干脆在定义对象时直接定义结构体指针变量,这样实参就不用取地址了。 这样想是没有错,但是结构体指针...
  • 描述结构体(struct)是...结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。...
  • (1) 用结构体类型定义变量 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include <stdlib.h> #include <string.h> struct Teacher { int age; char name[64]; }; ...
  • 结构体定义和结构变量定义

    千次阅读 2015-09-21 10:37:04
    以前写程序的时候总是要用到结构体,但是对结构体定义老是稀里糊涂,今天梳理下,让自己长长记性!  结构体定义有以下3种形式: ‘ 1、struct Date  {  int year,month,da;... 这时定义结构体变量:
  • 设计程序时,最重要的步骤之一是选择表示数据...1、结构体定义 struct book { char title[40]; //书名 char author[40]; //作者 float price; //单价 }; 在结构体声明中,用一对花括号括起来的是结构成...
  • 1.先定义结构体,然后在定义结构体变量 struct stu{ /*定义学生结构体类型*/ char name[20]; //学生姓名 char sex; //性别 long num; //学号 float score[3]; //三科考试成绩 } struct stu student1,...
  • 定义结构体类型变量

    千次阅读 2019-05-27 23:45:19
    结构体类型他只是一种类型,与 int,float,char,double一样,并没有具体数据,系统也不会给他分配内存,要想在程序中使用“结构体类型”数据,必须定义结构体类型变量”,并在其中存放具体数据,一定要弄清楚...
  • c语言中结构体定义变量的3种方法 本博客整理自http://blog.csdn.net/zunfo/article/details/51494631 1.先定义结构体,然后再定义结构体变量 struct Student{ char name[21];//学生姓名 int age; //学生年龄 ...
  • 结构体类型与变量

    2018-07-11 16:43:35
    结构体类型与变量1、结构体类型定义struct 结构体名称 { 类型标识符 成员1; 类型标识符 成员2; … 类型标识符 成员n;}; 定义结构体仅是对事务的说明,说明结构所包含的各个成员及其对应数据类型,这个结构体...
  • 结构体变量结构体类型的定义

    万次阅读 多人点赞 2019-08-02 16:43:19
    结构体类型定义 定义方式1: Typedef struct LNode { int data; // 数据域 struct LNode *next; // 指针域 } *LinkList; 定义方式2: struct LNode { int data; // 数据域 struct LNode *next; // 指针域 }; ...
  • 前言 本文中出现的 strcpy()函数需引入 string.h 头文件。 #include <string.h> ...一、声明“结构体类型” ...其中 struct 是声明...structstudents 整体是“结构体类型名”,在定义结构体类型的变量时,s...
  • 本文教你一种定义结构体类型变量的方法。
  • C 语言学习笔记结构体 02结构体指针变量结构体变量 的函数参数 C 语言学习笔记之 结构体指针变量一提指针 那可 是 C 语言的核心了有多少学子曾拜倒在指针的脚下单纯的说指针其实并不难但是与其它的结构搭配在一起...
  • 我说所有指针使用前都必须初始化,结构体中的成员指针也是一样 有人反驳说,不是吧,以前做二叉树算法时,他的左右孩子指针使用时难道有初始化吗 那时我不知怎么的想不出理由,虽然我还是坚信要初始化的 过了几天...
  • }定义一个名为struct A的结构体 第二个功能:typedef struct A B;声明struct A的另一个名称B 所以,楼主的代码中,直到B;这一行为止,typedef这条语句都尚未完成,此时编译器根本就不知道有一个叫B的东西 所
  • 最近在STM的GPIO结构体定义中看到源代码的时候,顺便复习下结构体指针变量的定义及typedef 的使用。 1.结构体类型定义 定义方式1: Typedef struct LNode { int data; // 数据域 struct LNode *next; // 指针...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 214,005
精华内容 85,602
关键字:

结构体直接定义变量