初学C语言之结构体

原创 2015年07月07日 19:37:22

      结构体属于一种数据构造类型,它是由若干“成员”组成的。每一个成员可以是一个基本数据类型或者又是一个构造类型。

   一、结构体的定义:

   struct  结构名  {成员列表}; 

   例如:struct stu

     {

        int num;

        char name[30];

        char sex;

        float score;

       };  

   在这个结构定义中,结构名为stu,该结构由四个“成员”组成,包括num(整型变量),name(字符数组),sex(字符变量),score(实型变量)。由此可见,结构体是一种由类型不同的若干有序变量组成的集合。  


    二、结构类型变量的说明

    1)先定义结构体,再说明结构变量  

        struct stu

     {

        int num;

        char name[30];

        char sex;

float score;

  };

   struct stu people1,people2;//说明两个变量people1和people2为stu结构类型。也可以使用宏定义使一个符号常量来表示一个结构类型。

   例如:

   #define STU struct stu

    STU

    {

    int num;

    char name[30];

    char sex;

    float score;

    };

  STU people1,people2;


注意:1.结构体类型与结构体变量是不同的概念,不能混同。

           2.对结构体变量中的成员,可以单独使用。




   2 )在定义结构类型的同时说明结构变量

    struct stu

    {

     int num;

     char name[30];

     char sex;

     float score;

    }people1,people2;//说明了people1,people2变量为stu类型后,就可以向这两个变量中的各个成员赋值。(成员就是num,name,sex,score)



    3)结构变量成员的表示方法

    一般形式:  结构变量名.成员名(中间的点不可省略,也不可以用空格代替)

    例如: people1.sex   就是代表第一个人的性别

   说明:结构体变量不能整体引用,只能引用变量成员。




    4)结构变量赋值

      意思就是给各成员赋值。可用输入语句或赋值语句来完成。

     int main(int argc,const char *argv[])

     {

     @autoreleasepool{

                   struct stu {

      int num;

     char *name;

     char sex;

     float score;

    }people1,people2;

    people1.num = 66;

    people1.name = "Leo";

    printf("intput sex and score\n");

    scanf("%c%f",&people1.sex,&people1.score);

    people2 = people1;

    printf("Number = %d\nName = %s\n",people2.num,people2.name);

    printf("Sex = %c\nScore = %f\n",people2.sex,people2.score);

    }

    return 0;

    }

   本程序中用赋值语句给num和name两个成员赋值,用scanf函数输入性别和成绩的值,然后把people1的所有成员的值整体赋予people2,最后分别输出people2的各个成员值。



     5)结构体类型嵌套使用




总结:

    1.当一个结构体类型定义在函数之外时,它具有全局作用域;若定义在任一对花括号之内,则具有局部作用御,其作用范围是所在花括号构成的快。

    2.结构体是一种复杂的数据类型,是数目固定、类型不同的若干成员的集合,结构体类型的定义只是列出了该结构的组成情况,编译系统并未因此而分配存储空间,当定义了结构体类型的变量或数组后,编译系统才会分配存储空间。

    3.如果有两个结构体的成员类型、名称、个数相同,但结构体名不同,也是两个不同的结构类型。



个人心语:

        大学时期,因为所学的专业是电子信息工程,课程中有涉及到一些C语言程序设计的内容,但都属于浅尝辄止,平时也比较贪玩,所以在这方面并没有积累较多的基础知识,基本上属于零基础。毕业后想往移动互联网方向发展,于是开始自学C语言,以此入门ios开发。自学过程主要靠看网上免费的教学视频,发现学习效果并不理想,主要是学习过程中的问题得不到及时有效的解决,往往越积越多,无法开展下一阶段的学习,于是报名参加了培训,经过一段时间的学习,发现了这门语言学习中的乐趣,对于一个基本算是初学者的人而言,收获颇多。发此博文,主要是想巩固之前学过的知识点,之后会继续写一些学习过程中有疑问或者自己学习心得的文章,如有任何疏漏或者错误的地方,也请各位大神抽空帮忙指导一下,在此先谢过了。也希望和更多同是零基础学习ios开发的人成为朋友,共同交流学习,学习本来就是一个需要互动的过程。   

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C语言----结构体

一、结构体赋值数组本身是不能直接相互赋值的; 可以通过把 数组 放在 结构体里 ,用结构体去赋值,因为结构体是可以相互赋值的。二、 结构体内存对齐1、以最⼤大成员变量类型所占空间的最小整数倍为分配单...

C语言结构体实现方法

  • 2015-03-21 01:24
  • 548KB
  • 下载

C语言结构体

  • 2013-03-27 15:50
  • 508KB
  • 下载

c语言结构体的偏移、c++

c语言中关于结构体的位置偏移原则简单,但经常忘记,做点笔记以是个记忆的好办法 原则有三个: a.结构体中的所有成员其首地址偏移量必须为器数据类型长度的整数被,其中第一个成员的首地址偏移量为0, 例如,...

c语言结构体

  • 2013-01-09 13:03
  • 1.40MB
  • 下载

c语言结构体

  • 2013-12-08 13:47
  • 704KB
  • 下载

C语言中将结构体写入文件

可以使用fwrite()将一个结构体写入文件:   fwrite(&some_struct,sizeof somestruct,1,fp); 对应的fread函数可以再把它读出来,此处fwrite...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)