美文网首页
C语言结构体(1)

C语言结构体(1)

作者: 卿人丶 | 来源:发表于2018-08-04 21:16 被阅读6次

三丶结构体

构造体相当于用户自己定义一种数据结构里面可以存放各种不同的数据类型

   structDate

    {

       intday;

       intmouth;

       intyear;

    };

    struct Student

    {

       intnum;

       charname[20];

       charsex;

       intage;

       struct  Date birthday;

       charaddr[30];

    }student1,student2;   ---注意变量名的定义

代码中的  Date相当于结构体的类型名 而birthday则为结构体的变量名

注意:

[if !supportLists]1. [endif]结构体的类型名和结构体的变量名是不同的概念,只能对变量赋值,存取或运算,而不能对一个类型赋值、存取或运算。并且在编译时对类型是不会分配空间的

[if !supportLists]2. [endif]结构体中成员的变量名可以与程序中的变量名相同,不过两个指的是不同的对象,并且互不干扰

[if !supportLists]3. [endif]结构体中的成员也能够单独使用

    struct Student

    {

       intnum;

       charname[20];

       charsex[10];

       intage;

       charaddr[30];

    }student3= {97001,"吴宣仪","女",23,"海南"};

    printf("学号:%d\n姓名:%s\n性别:%s\n年龄:%d\n地址:%s", student3.num,student3.name, student3.sex, student3.age, student3.addr);

注意其使用

顺便提一下C语言中 scanf中如果要求输入数组的话 可以不用加取址符!因为数组本身就有地址

同时还有结构体数组的使用

结构体指针 (主要代码如下)

         struct Student

         {

                  intnum;

                  charname[20];

                  charsex[10];

                  intage;

                  charaddr[30];

         }student3 ={97001,"吴宣仪","女",23,"海南"};

         struct Student*p,*p2,*p3;

         struct Student student[3] = { { 97001, "吴宣仪", "女", 23, "海南" }, { 97001, "赵丽颖", "女", 27, "河北" }, { 97001, "张艺兴", "男", 25, "长沙"} };

         p =&student3;

         p2 =&student[2];

         p3 =&student[1];

         printf("学号:%d\n姓名:%s\n性别:%s\n年龄:%d\n地址:%s\n\n", student3.num,student3.name, student3.sex, student3.age, student3.addr);

         printf("学号:%d\n姓名:%s\n性别:%s\n年龄:%d\n地址:%s\n\n", (*p).num, (*p).name,(*p).sex, (*p).age, (*p).addr);

         printf("学号:%d\n姓名:%s\n性别:%s\n年龄:%d\n地址:%s\n\n", (*p2).num,(*p2).name, (*p2).sex, (*p2).age, (*p2).addr);

         printf("学号:%d\n姓名:%s\n性别:%s\n年龄:%d\n地址:%s\n\n", p3->num,p3->name, p3->sex, p3->age, p3->addr);

1.注意点  当用指针指向结构体成员的时候  如(*p2).num  括号不可省略 因为.的优先级比*高

否则就会变成*(p2.num)会出错的

2. structStudent*p1;

         p1 = (structStudent*)&student[0].num;  注意指向如果想去指向结构体中的成员地址的话,则 必须要使用强制转换

指向结构体数组的指针

         struct Student

         {

                  intnum;

                  charname[20];

                  charsex[10];

                  intage;

                  charaddr[30];

         };

         struct Student*p;

         struct Student student[3] = { { 97001, "吴宣仪", "女", 23, "海南" }, { 97001, "赵丽颖", "女", 27, "河北" }, { 97001, "张艺兴", "男", 25, "长沙"} };

         for(p =student; p < student + 3; p++)

         {

                  printf("学号:%d\n姓名:%s\n性别:%s\n年龄:%d\n地址:%s\n\n", p->num,p->name, p->sex, p->age, p->addr);

         }

仔细观察这个for循环中的p的作用 指向地址并且一直在自加一 十分巧妙的方法

3.用结构体变量或者结构体变量成员去作为函数参数时 为值传递(其运行的函数不会改变其原来的值,只会产生一种新的影响)

结构体指针变量 则为址传递

相关文章

  • C语言和OC的结构体(struct)

    Struct(结构体) 1.结构体定义 2.结构体变量 3.结构体数组 4.C语言结构体指针 5.C语言共用体 6...

  • C语言结构体(1)

    三丶结构体 构造体相当于用户自己定义一种数据结构里面可以存放各种不同的数据类型 structDate { i...

  • C++语言学习之面向对象

    1.C语言与C++语言的区别 C++面向对象 C 面向过程 函数+结构体 C++可以运行调用C语言 反之 C语言无...

  • C结构体、C++结构体 和 C++类的定义和区别

    一 : C语言中的结构体 (1) C语言中的结构体不能为空,否则会报错 要求一个结构或联合至少有一个成员 (2) ...

  • C语言结构体用法很多,坑也很多

    C语言可谓是编程界的传奇语言,历经几 十 年,依然排名前列。 本文主要说的是C语言中的结构体,结构体是C语言中重要...

  • 2019-08-17结构体、共用体、宏定义

    1.结构体 (1)为什么需要结构体? 没有结构体之前,在C语言中,数据的组织依靠:变量+数组最初简单的时候,只需要...

  • C语言结构体

    结构体 本文介绍C语言结构体,struct 在C++中功能相对C较多,相当于类,这里暂时不讨论,本文单独讨论C语言...

  • struct

    C语言结构体(struct)常见使用方法分三块来讲述:1 首先://注意在C和C++里不同在C中定义一个结构体类型...

  • 嵌入式学习笔记19.11.25

    c语言结构体 结构体一般定义全局变量 struct stu{//struct 定义结构体 stu 结构体名称 in...

  • 12-Go语言结构体

    结构体 结构体的基本概念 什么是结构体Go语言中的结构体几乎和C语言中的结构体一模一样都需要先定义结构体类型, 再...

网友评论

      本文标题:C语言结构体(1)

      本文链接:https://www.haomeiwen.com/subject/jsxvvftx.html