• 结构体


    数据结构  最慢一星期一章   2015.10.5   一       2033    

    首先  我还不知道的一些基础知识

    结构体定义并不是定义一个变量,而是定义了一种数据类型,这种类型是你定义的,它可以和语言本身所自有的简单数据类型一样使用(如 int )

    函数参数是什么类型就传什么类型

    /*

    函数功能:定义一个结构体,在另一个函数中打印结构体成员的值;

    函数形参为结构体变量的函数使用void qq(struct book cc);

    */

    #include"stdio.h"

    struct book     //定义一个名为book的结构体

    {

     char name;

     int cose;

    };

    void qq(struct book cc);   //因为函数在主函数下面所以要声明一下函数

    void main()

    {

    struct book one;       //定义一个结构体名为book的结构体变量one

    one.cose=25;

    one.name=10;

     qq(one);

    }

    void qq(struct book cc)   //打印函数

    {

     printf("%d  ",cc.cose);

     printf("%d  ",cc.name);

    }

    有没有疑问为什么void qq(struct book cc) 里面的形参为struct book类型的参数,要和上面定义的结构体的类型一样 -struct book ccstruct book one; 

    问一个问题如何把一个结构体的变量的成员的信息copy到另一个结构体变量?

    #include"stdio.h"

    struct book     //定义一个名为book的结构体

    {

     char name;

     int cose;

    };

    void main()

    {

    struct book one;       //定义一个结构体名为book的结构体变量one

    struct book cc;        //定义一个结构体名为book的结构体变量cc

    one.cose=25; 

    one.name=10;

    cc=one;       //把变量one的成员copy到变量cc

    printf("%d  ",cc.cose);

     printf("%d  ",cc.name);

     }

    结构体变量为数组的结构体struct book shu[20];    //20本书 

    /*

    函数功能:结构体变量为数组的结构体

    */

    /*

    函数功能:结构体变量为数组的结构体

    */

    #include"stdio.h"

    struct book       //

    {

     int price;     //书的价格

    };

    void main()

    {

    struct book shu[20];    //20本书 

    shu[0].price=1;         //0的价格

    shu[1].price=2;         //1的价格

    shu[2].price=3;         //2的价格

    shu[3].price=4;         //3的价格

     printf("%d  ",shu[0].price);

     printf("%d  ",shu[1].price);

     printf("%d  ",shu[2].price);

     printf("%d  ",shu[3].price);

    }

    如果不用数组呢

    struct book shu0shu1shu2shu3。。。。。。。;//麻烦

    接着来

    数组形参

    数组有两个特殊的性质。一是不能复制数组;二是使用数组名字时,数组会自动转化为指向其第一个元素的指针。由于数组不能复制,所以无法编写使用数组类型形参的函数,因为数组会被自动转化为指针。

       数组形参是个容易出问题的地方。因为对于C/C++新手而言,最大的惊讶是C++中根本不存在所谓的“数组形参”,因为数组在传入时,实质上只传入指向其首元素的指针。--来源于网络

    #include"stdio.h"

    int aa[2]={0,1};

    void test(int a[]); //形参为int*

    void main()

    {

     test(aa);

    }

    void test(int a[])

    {

     printf("%d  ",a[0]);

     printf("%d  ",a[1]);

    }

    这种从数组到指针的自动转换被赋予了一个迷人的技术术语:“退化”,即数组退化成指向其首元素的指针。顺便提及,同样的事情也发生在函数上。一个函数型参数会退化成一个指针。不过,和数组退化时丢失边界不同,一个退化的函数具有良好的感知能力,可以保持其参数类型和返回类型。

    由于在数组形参中数组边界被忽略了,因此通常在声明时最好将其省略。然而,如果函数期望接受一个指向一个元素序列(换句话说,就是数组)的指针作为参数,而不是指向单个对象的指针,那么最好这样声明:

    void test(int a[]); // 形参a仍然是一个int*-----来源于网络

    我也只是记下了就这样用,下面看结构体数组做函数参数

    #include"stdio.h"

    struct book       //

    {

     int price;     //书的价格

    };

    void qq(struct book cc[]);

    void main()

    {

    struct book shu[20];    //20本书 

    shu[0].price=1;         //0的价格

    shu[1].price=2;         //1的价格

    shu[2].price=3;         //2的价格

    shu[3].price=4;         //3的价格

     qq(shu);

    }

    void qq(struct book cc[])

    {

     printf("%d  ",cc[0].price);

     printf("%d  ",cc[1].price);

     printf("%d  ",cc[2].price);

     printf("%d  ",cc[3].price);

    }

  • 相关阅读:
    添加绝对路径的链接
    css-------------控制溢出隐藏 换行用省略号表示
    引入公共头部 脚部
    入口图片放在浏览器正中间,点击之后缩小固定在浏览器一侧
    伪类 统一添加样式
    nav 鼠标移入当前高亮显示,其他消失
    17/9/6 bootstrap.css去掉后引发的样式错乱
    JavaScript的常见兼容问题及相关解决方法(chrome/IE/firefox)
    javascript特效实现——当前时间和倒计时效果
    使用DataTables导出excel表格
  • 原文地址:https://www.cnblogs.com/yangfengwu/p/4858993.html
Copyright © 2020-2023  润新知