精华内容
下载资源
问答
  • C语言结构体变量

    2020-08-25 10:01:46
    结构体是一个或多个变量的集合,这些变量可以是不同的类型,为了处理的方便而将这些变量组织在一个名字之下。...结构体变量的定义 结构体就是将不同类型的数据组合成一个有机的整体,以便于引用。如定义一个学生的信.

    结构体是一个或多个变量的集合,这些变量可以是不同的类型,为了处理的方便而将这些变量组织在一个名字之下。比如我要统某个班的学生信息(包括姓名,学号,成绩),每个学生都需要至少3个变量,如若学生人数较多,那需要的变量就非常之多了。为了解决这样的问题,就要用到结构体这种构造类型,我们可以将每个学生的各项信息以不同类型的数据存放到一个结构体中,如用字符型表示姓名,用整型或字符型表示学号、用整型或实型表示成绩。

     

    结构体变量的定义

    结构体就是将不同类型的数据组合成一个有机的整体,以便于引用。如定义一个学生的信息:

    struct student{int num;char name[20];int score;};struct为结构体关键字,student就是这结构体的类型名,而 num,name, score就是该结构体的成员,他们可以是不同类型的,注意在定义类型的时候不要对结构体成员num,name, score赋初值。其次就是在大括号后面要有分号“;”。

    定义结构体变量的方式

    定义变量的方式都是大同小异的,都为数据类型+变量名这样一种方式,比如int型,首先得有int这样一个数据类型,然后再用int这个数据类型去定义一个变量,同样的,我们要定义一个结构体变量,必须要有一个结构体类型,然后用这个类型去定义一个变量。结构体变量的定义有多种方式:

    方式一:先定义结构体类型再定义变量名

    其中struct是关键字,student是结构体标记(用于为结构体命名),struct student代表该结构体的类型, 大括弧里面就是结构体的成员。注意大括弧的后面一定要有一个分号‘;’。到此为止我们有了"struct student"这样的类型了,struct student就等价于我们的int一样,接下来我们就要定义一个这样类型的变量,定义格式如下:struct student zhangsan; 这个zhangsan就是我们所要的结构体变量。

    方式二:在声明类型的同时定义变量

    如:

    这种方式定义结构体,后续可以根据需要定义新的变量,如struct student Wangwu。 注意:不能用Zhangsan去定义新的变量,这里Zhangsan、Lisi都为变量名而不是结构体类型。

    方式三:直接定义结构体类型变量

    这种定义方式中结构体变量只能在定义结构体类型的时候定义,不能再定义其他的变量。这样的定义的结构体类型是没有名字的,我们也可以用typedef重新为这样的结构体类型命,如:

    使用typedef后,我们可以用Zhangsan作为数据类型来定义新的变量。需要注意的是,不能直接使用Zhangsan.num,因为Zhangsan不是变量,而是结构体类型。

    结构体变量的初始化:

    结构体变量的应用:

    结构体中的成员,可以像普通变量那样单独使用,如下面例子中,结构体变量A中的成员num,可以用A.num的方式来使用。

    结构体变量的成员引用:结构体变量名.成员名

    关于结构体的一点说明:

    1、不能将结构体变量作为整体进行操作:printf("%d, %d\n", A);错误scanf("%d, %d\n”,&A); //错误printf("%d, %d\n”, A.num, A.score); //正确scanf("%d, %d\n”, &Lucy.num, &Lucy.sex); //正确2、当结构体变量的成员也是结构体类型时,引用必须用最底层的成员变量,如下

    3、成员名可与程序中的变量名相同,二者代表不同对象

    4、可以引用结构体变量成员的地址,也可以引用结构体变量的地址,例如:scanf("%d", &A.num); //输入A.num的值printf("%d", &A); //输出Bob的首地址目的:主要用作函数参数,传递结构体变量的地址。5、允许具有相同类型的结构变量可以相互赋值,其它情况不允许对结构变量直接赋值。

    展开全文
  • c语言结构体变量和结构体指针

    千次阅读 2013-05-10 16:11:01
    c语言中定义结构体指针并指向一片内存空间和直接定义一个结构体变量的区别 Node *p=(Node *)malloc(sizeof(Node))和Node p二者的区别 Node *p是定义一个Node结构体指针,指针为p,指向一个Node结构体,并为这个...
    c语言中定义结构体指针并指向一片内存空间和直接定义一个结构体变量的区别
    Node *p=(Node *)malloc(sizeof(Node))和Node p二者的区别
    Node *p是定义一个Node结构体指针,指针名为p,指向一个Node结构体,并为这个结构体分配了内存空间并且该结构体无命名,而Node p是定义一个Node结构体,结构体名为p。
    至于二者在内存中是怎么存储的,则需要考虑编译器的相关知识(龙书上讲解的十分详细)
    struct Node{int i;char c;}
    struct Node *P1;
    struct Node P2;
    P1->i;
    p2.c;
    假如该结构体有两个属性 int i;char c;
    使用时结构体变量p2直接用点操作符如p2.c;
    使用结构体指针p1时用->操作符如P1->i;->操作符即为调用指针指向的变量
     
    内存中结构体分配在一段内存地址上,起始地址为结构体指针的值
    如Node *p=(Node *)malloc(sizeof(Node));此时p的值即为Node变量在内存中的起始地址
    若用Node p声明结构体变量则会随机的在内存中利用剩余空间分配 此时起始地址不可知
    一般编译器会预留一段内存地址以便创建变量,并且这两种声明分配的内存空间大小相等
    展开全文
  • C语言结构体初始化教程在C语言结构体初始化语法struct structName varName = {fileldValue1, ...varName结构体变量名。fileldValue1结构体第一个字段对应的初始化值。fileldValue2结构体第二个字段对应的初始化值。f...

    C语言结构体初始化教程

    C语言结构体初始化

    语法

    struct structName varName = {fileldValue1, fileldValue2, fileldValue3};

    参数

    参数

    描述

    struct

    结构体的关键字。

    structName

    结构体名。

    varName

    结构体变量名。

    fileldValue1

    结构体第一个字段对应的初始化值。

    fileldValue2

    结构体第二个字段对应的初始化值。

    fileldValue3

    结构体第三个字段对应的初始化值。

    说明

    我们分别使用了 fileldValue1 来初始化了结构体 varName 中的第一个字段的值,使用了 fileldValue2 来初始化了结构体 varName 中的第二个字段的值,fileldValue3 来初始化了结构体 varName 中的第三个字段的值。

    使用这种方式初始化,我们只能按照顺序一个个的初始化结构体的成员。

    C语言初始化结构体成员

    语法

    struct structName varName = {

    .filed1 = value1,

    .filed2 = value2,

    .filed3 = value3

    };

    说明

    我们分别使用了 value1 来初始化了结构体 varName 中的 filed1 字段,使用了 value2 来初始化了结构体 varName 中的 filed2 字段,value3 来初始化了结构体 varName 中的 filed3 字段。

    使用这种方式初始化,我们可以按照任意的顺序初始化结构体的成员。

    注意

    使用这种方式初始化结构体成员使用的是 .filed1 = value1 的形式,且除了最后一个成员,其他的每一个成员的最后都要加一个逗号,即 ,。

    最后一个成员不可以加逗号。

    C语言初始化结构体成员

    语法

    struct structName varName = {

    filed1 : value1,

    filed2 : value2,

    filed3 : value3

    };

    说明

    我们分别使用了 value1 来初始化了结构体 varName 中的 filed1 字段,使用了 value2 来初始化了结构体 varName 中的 filed2 字段,value3 来初始化了结构体 varName 中的 filed3 字段。

    使用这种方式初始化,我们可以按照任意的顺序初始化结构体的成员。

    注意

    使用这种方式初始化结构体成员使用的是 filed1 : value1 的形式,且除了最后一个成员,其他的每一个成员的最后都要加一个逗号,即 ,。

    最后一个成员不可以加逗号。

    案例

    C语言顺序初始化结构体成员

    顺序初始化结构体中的成员

    #include

    struct Car{

    char *brand;

    int price;

    int maxSpeed;

    };

    void main(){

    printf("嗨客网(www.haicoder.net)\n\n");

    struct Car car = {"Benz", 100000, 256};

    char *brand = car.brand;

    int price = car.price;

    int maxSpeed = car.maxSpeed;

    printf("Init Brand = %s, Price = %d, MaxSpeed = %d\n", brand, price, maxSpeed);

    }

    程序运行后,控制台输出如下图所示:

    4e55ebdf509159585fb2157f38e6eb0d.png

    我们首先,定义了一个结构体 Car,该结构体有三个成员,即一个

    接着,我们使用了顺序初始化的方式,初始化了结构体 car 的三个成员,即分别将结构体 car 的 brand 字段初始化为 “Benz”、结构体 car 的 price 字段初始化为 100000、结构体 car 的 maxSpeed 字段初始化为 256。

    C语言乱序初始化结构体成员

    乱序初始化结构体中的成员

    #include

    struct Car{

    char *brand;

    int price;

    int maxSpeed;

    };

    void main(){

    printf("嗨客网(www.haicoder.net)\n\n");

    struct Car car = {

    .price = 900000,

    .maxSpeed = 400,

    .brand = "Benz"

    };

    char *brand = car.brand;

    int price = car.price;

    int maxSpeed = car.maxSpeed;

    printf("Init Brand = %s, Price = %d, MaxSpeed = %d\n", brand, price, maxSpeed);

    }

    程序运行后,控制台输出如下图所示:

    3e8bd638654d9a9f065ba619d6bfe720.png

    这次,我们在结构体里面,通过 “.FileldName” 的形式初始化了结构体的成员,使用这种方式初始化结构体的成员,不需要按照顺序,只需要在前面写上我们需要初始化的字段名即可。

    最后,我们使用

    C++风格结构体初始化

    使用 C++ 风格来初始化结构体成员

    #include

    struct Car{

    char *brand;

    int price;

    int maxSpeed;

    };

    void main(){

    printf("嗨客网(www.haicoder.net)\n\n");

    struct Car car = {

    price : 900000,

    maxSpeed : 400,

    brand : "Benz"

    };

    char *brand = car.brand;

    int price = car.price;

    int maxSpeed = car.maxSpeed;

    printf("C++ Style Init Brand = %s, Price = %d, MaxSpeed = %d\n", brand, price, maxSpeed);

    }

    程序运行后,控制台输出如下图所示:

    1004b9bf1a45dca6a0c87bbcf3577d14.png

    这次,我们使用了 C++ 风格来初始化了结构体的成员。

    C语言结构体初始化总结

    在 C 语言中,我们要初始化一个结构体,有三种方法,即,顺序初始化、乱序初始化和 C++ 风格的初始化。

    展开全文
  • c语言中结构体类型变量类型,结构体变量名赋值 这几天看图用领接表存储图时候,开始实现的时候发现对结构体的变量名赋值有些疑惑,疑惑的地方查了下,留做备份 //此声明声明了拥有3个成员的结构体,分别为整型的a,...

    结构体的详情参考本文档

    c语言中结构体类型变量类型,结构体变量名赋值

    这几天看图用领接表存储图时候,开始实现的时候发现对结构体的变量名赋值有些疑惑,疑惑的地方查了下,留做备份

    //此声明声明了拥有3个成员的结构体,分别为整型的a,字符型的b和双精度的c
    //同时又声明了结构体变量s1
    //这个结构体并没有标明其标签
    struct
    {
    int a;
    char b;
    double c;
    } s1;

    //此声明声明了拥有3个成员的结构体,分别为整型的a,字符型的b和双精度的c
    //结构体的标签被命名为SIMPLE,没有声明变量
    struct SIMPLE
    {
    int a;
    char b;
    double c;
    };
    //用SIMPLE标签的结构体,另外声明了变量t1、t2、t3
    struct SIMPLE t1, t2[20], *t3;

    *//也可以用typedef创建新类型
    typedef struct
    {
    int a;
    char b;
    double c;
    } Simple2;
    //现在可以用Simple2作为类型声明新的结构体变量
    Simple2 u1, u2[20], u3;

    在上面的声明中,第一个和第二声明被编译器当作两个完全不同的类型,即使他们的成员列表是一样的,如果令 t3=&s1则是非法的。

    展开全文
  • 在初学C语言时到结构体总与数组联系在一起,这就形成了很多...结构体变量名就是变量名。 象int a一样,只是printf 处理不了结构体。通过 printf 输出结构体,结果是没有意义的(整个结构体复制堆栈中,按 照对应的...
  • 指针也可以指向一个结构体,定义的形式一般为:struct 结构体名 *变量名;下面是一个定义结构体指针的实例:struct stu{char *name; //姓名int num; //学号int age; //年龄char group; //所在小组float score; //成绩...
  • C语言 | 结构体变量

    2021-04-29 08:41:58
    C语言结构体类型 C语言中允许用户自己建立由不同类型数据组成的组合型的数据结构,它称为结构体。在其他一些高级语言中称“记录”。 一般形式 struct 结构体 {成员表列}; 结构体类型的名字是由一个关键字struct...
  • C语言结构体变量的定义及引用

    万次阅读 多人点赞 2018-08-08 16:05:24
    结构体变量名>; eg:struct student student1,student2; 关键字struct要与结构体名student一起使用,共同构成结构体类型名 2.结构体类型与结构体变量同时定义 一般形式如下: struct<结构体名>...
  • C语言结构体(5) 结构体指针变量

    千次阅读 2020-03-30 16:13:17
    C语言提供了基础数据类型,例如char、...struct 结构体类型名* 指针变量名; 定义指针变量的格式与基本数据类型定义指针变量格式一样。例如前面定义的读者结构体类型struct reader,可以定义指针变量如下: struc...
  • c语言结构体

    2018-06-05 15:36:12
    结构体也可以作为函数的形参,形参的格式 为:struct 结构体名 结构体变量名 如 display函数中的形参 struct product pro;其中 product 为结构体名,pro为结构体变量名(形参)#include &lt;stdio.h&gt; #...
  • C语言结构体与结构体指针的使用

    千次阅读 多人点赞 2020-08-08 22:29:02
    C语言结构体与结构体指针的使用 tips:最近要好好学习一下数据结构,所以必不可少的就是c语言的结构体和结构体...一、结构体变量的定义和初始化 1、首先我们来看一下结构体的定义 struct 结构体 { 成员列表; }
  • html指向结构体变量的指针前面咱们经过“结构体变量名.成员名”的方式引用结构体变量中的成员,除了这种方法以外还能够使用指针。前面讲过,&student1 表示结构体变量 student1 的首地址,即 student1 第一个项...
  • 背景介绍 操作系统 : CentOS7.3.1611_x64 ...C语言结构体定义中的变量默认是公有(Public)属性,如果实现成员变量的私有(Private)化? 解决方案 将结构体的定义放入源码件中实现,头文件只放声明。 比如有
  • 1.首先定义一个结构体,给它取别名:typedef struct node{struct node * ...定义结构体指针与指针变量,给出几种不同的定义方式struct node *a,b;pnode *c,d;linklist p;他们别名的关系如下:linklist=struct nod...
  • C语言结构体指针

    2018-10-04 18:30:42
    前面我们通过“结构体变量名.成员名”的方式引用结构体变量中的成员,除了这种方法之外还可以使用指针。 前面讲过,&amp;student1 表示结构体变量 student1 的首地址,即 student1 第一个项的地址。如果定义一个...
  • C语言结构体

    2020-02-03 14:36:29
    C语言结构体(Struct)从本质上讲是一种自定义的数据类型,只不过这种数据类型比较复杂,是由 int、char、float 等基本类型组成的。你可以认为结构体是一种聚合类型。 在C语言中,可以使用结构体(Struct)来存放一...
  • 一般情况---------变量的定义方式为:struct 结构体名 变量名 - ****struct 结构体名** { //成员列表 };** 无名结构体---------结构体变量和结构体同时定义 (指定一个无名结构体类型,显然不能再以次结构类型...
  • C语言 结构体 共用体

    2020-09-22 19:21:37
    struct 结构体名称 结构体变量名; b、 struct 结构体名称{ 成员列表; }变量名,变量名、、、; c、 struct { 成员列表; }变量名,变量名、、、; 3、结构体成员 1> 结构体成员就是结构体包含的变量; 2> ...
  • 问题: typedef struct a{ int n; int m; }c;...问题一:a是结构体名,c是结构体变量名,为什么不能直接使用(c.n=1;c.m=2;编译时错误)? 问题二:在声明b时,只有struct a b;和c b ;这两种方...
  • 所以有了灵活的结构体变量结构体变量从意义上来讲是不同数据类型的组合,从内存上来讲是在一个空间内进行不同的大小划分。 1.1 结构体类型变量的定义 struct 结构体{ 结构体成员; }; ​ struct ...
  • struct 结构体名{ 结构体所包含的变量或数组 }; 结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员(Member)。请看下面的一个例子: ...
  • 结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)...结构体的定义、引用、初始化定义结构体为用户自定义数据类型,所以在定义结构体变量前需要先声明,一般形式为struct 结构体{成...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,292
精华内容 516
关键字:

c语言结构体变量名

c语言 订阅