zoukankan      html  css  js  c++  java
  • 31_结构体的使用

    1.结构体是将零个或多个任意类型的命名变量组合在一起的聚合数据类型,每个变量都叫做结构体成员
    2.结构体何以作为函数参数传递,其是复制一个结构体将它传给一个函数,是值传递

    代码如下:

    package
    main
    
    
    import"fmt"
    
    
    //定义一个结构体,存储学生信息
    //要想被不同的包调用结构体,则结构体的名字首字母要大些,里面的变量名也要大写
    typeStudentstruct{
    //和变量定义不同,不要写var关键字
    Id int
    Name string
    Sex byte
    Age int
    Addr string
    }
    
    
    //值传递
    funcPrintName(sStudent){
    s.Name="test"
    fmt.Println(s.Name)//test
    }
    
    
    //引用传递
    funcPrintId(s*Student){
    s.Id=666
    fmt.Println(s.Id)
    }
    funcmain(){
    
    
    //1.结构体中可以通过(.)操作符来对成员变量进行赋值
    vars1Student
    s1.Name="steven"
    fmt.Println(s1.Name)
    //2.顺序初始化,必须每个成员都要初始化
    s2:=Student{1,"alice",'m',23,"sy"}
    fmt.Println(s2)
    //3.部分初始化
    s3:=Student{Id:2,Name:"zhangsan"}//没有初始化的默认为0
    fmt.Println(s3)
    
    
    //4.指针变量的定义
    vars4*Student=&Student{3,"lisi",'w',22,"js"}
    s5:=&Student{Id:4,Name:"wangwu"}
    
    
    //s4.成员*s4.成员是等价的,(.)操作符比*操作符级别高,所以(*)要加括号
    fmt.Printf("*s4.Addr=%d",(*s4).Id)
    
    
    //两者效果是一样的
    fmt.Println(s4,s5)//&{3lisi11922js}&{4wangwu00}
    fmt.Println(*s4,*s5)//{3lisi11922js}{4wangwu00}
    
    
    //5.先分配空间在赋值,这种定义的是指针类型
    s6:=new(Student)
    s6.Id=6
    s6.Name="xiaoqi"
    fmt.Println(*s6)//{6xiaoqi00}
    
    
    //7.结构体变量只能进行==和!=比较
    fmt.Println(s1==s2)//false
    
    
    //8.结构体做函数参数,是值传递
    PrintName(s3)
    fmt.Println(s3.Name)//zhangsan
    
    
    //9.引用传递
    PrintId(&s2)
    fmt.Println(s2.Id)
    
    
    //相同结构体之间可以赋值
    vars7Student=s2
    fmt.Println("S7=",s7)
    }
    
    
    packagemain
    
    
    import"fmt"
    
    
    //定义一个结构体,存储学生信息
    //要想被不同的包调用结构体,则结构体的名字首字母要大些,里面的变量名也要大写
    typeStudentstruct{
    //和变量定义不同,不要写var关键字
    Idint
    Namestring
    Sexbyte
    Ageint
    Addrstring
    }
    
    
    //值传递
    funcPrintName(sStudent){
    s.Name="test"
    fmt.Println(s.Name)//test
    }
    
    
    //引用传递
    funcPrintId(s*Student){
    s.Id=666
    fmt.Println(s.Id)
    }
    funcmain(){
    
    
    //1.结构体中可以通过(.)操作符来对成员变量进行赋值
    vars1Student
    s1.Name="steven"
    fmt.Println(s1.Name)
    //2.顺序初始化,必须每个成员都要初始化
    s2:=Student{1,"alice",'m',23,"sy"}
    fmt.Println(s2)
    //3.部分初始化
    s3:=Student{Id:2,Name:"zhangsan"}//没有初始化的默认为0
    fmt.Println(s3)
    
    
    //4.指针变量的定义
    vars4*Student=&Student{3,"lisi",'w',22,"js"}
    s5:=&Student{Id:4,Name:"wangwu"}
    
    
    //s4.成员*s4.成员是等价的,(.)操作符比*操作符级别高,所以(*)要加括号
    fmt.Printf("*s4.Addr=%d",(*s4).Id)
    
    
    //两者效果是一样的
    fmt.Println(s4,s5)//&{3lisi11922js}&{4wangwu00}
    fmt.Println(*s4,*s5)//{3lisi11922js}{4wangwu00}
    
    
    //5.先分配空间在赋值,这种定义的是指针类型
    s6:=new(Student)
    s6.Id=6
    s6.Name="xiaoqi"
    fmt.Println(*s6)//{6xiaoqi00}
    
    
    //7.结构体变量只能进行==和!=比较
    fmt.Println(s1==s2)//false
    
    
    //8.结构体做函数参数,是值传递
    PrintName(s3)
    fmt.Println(s3.Name)//zhangsan
    
    
    //9.引用传递
    PrintId(&s2)
    fmt.Println(s2.Id)
    
    
    //相同结构体之间可以赋值
    vars7Student=s2
    fmt.Println("S7=",s7)
    }
    
    
    每天的价值就是不停息的前进!!!
  • 相关阅读:
    提取汉字首字母助手类:
    ComboBox1获取datatable的一列
    C++容器
    字符串反转
    什么是C++标准库
    如何在程序中使用系统调用
    秒针、分针和时针的重合次数(十二小时)
    查找单向链表倒数第n个元素
    Ubuntu下查看计算机信息
    实验三:给系统添加一个新的系统调用
  • 原文地址:https://www.cnblogs.com/zhaopp/p/11487321.html
Copyright © 2011-2022 走看看