初学C语言----结构体

来源:互联网 发布:js随机函数 编辑:程序博客网 时间:2024/06/06 15:47

初学C语言----结构体

结构体

作用:一个变量可以保存多个不同类型的数据;

 

定义结构体--语法:

 

结构体初始化:

1.    先声明后赋值:

 

struct 结构体名{
 
成员列表;

};

 

切记:大括号后面有分号!

说明:成员列表就是指你要保存哪些类型的数据;

比如:

struct ziLiao{

float shenGao;

    intnianLing;

    chargender;

char name[50];

};

注意:上面的语法只是定义一个新的类型,而这个类型叫做结构体类型。

//类型:int float double;

//变量则是:gender nianLing;

 

而我们实际存放数据的是变量;

 

所以:我们需要定义一个结构体类型的变量!

定义语法:struct 结构体名变量名;

   

例如:struct ziLiao p;

类型:struct ziLiao

变量名:p     

 

变量赋值的语法:变量名.成员名 =数据;

:p.age =18;

注意,定义函数内成员间要用;隔开,否则报错。最后一个也要加;

字符串的赋值:

需要加头文件<string.h>

strcpy(结构体变量名.成员名,字符串)

:strcpy(p.name,”张三”);

结构体初始化:

2.    在声明的时候初始化:

第一种方法:

语法: struct 结构体名变量名 ={结构体1;结构体2;结构体3;…结构体N};

:

struct Student{

int stuNo;

int age;

char name[50];

};

struct ziLiao p = { 067 ; 24 ; “段弘毅”};

注意:

声明的时候初始化,赋值的顺序要和定义成员列表时的顺序一样;

 

第二种方法: struct 结构体名变量名 = { .成员名=数据类型1 ; .成员名=数据类型2 ; .成员名=数据类型3 };

:structziLiao p = {.name = “段弘毅” ; age = 24 , stuNo = 067 };

注意:p = { 067 ; 24 ; “段弘毅” };//这样是不可以的!

 

3.    先声明,后一次性赋值:

struct 结构体名变量名;

变量名 = (struct 结构体名){ 数据1,数据2,…数据N};

struct ziLiao p;

p = (struct ziLiao){ 067 ; 24 ; “段弘毅” };

 

———————————————————————

深挖结构体其他的使用:

1.可以定义无限个结构体,用法跟之前说的用法完全一样(只不过是多加了几个类型而已)

 

 2.作用域:结构体定义在哪,那么它的作用域就在它定义的位置,到它所在的作用域结束

 

 3.在结构体定义的大括号后面写标识符,那么这个标识符就是这个结构体的变量.它的作用域跟它定义结构体的作用域一样

        也可以同时定义多个变量,以,隔开

 

    例:

         struct Person{

 

             int age;

             char name[50];

        

         }p3,p4,p5;

 

 

 4.结构体名可以省略,这样就叫匿名结构体

    例:

         struct{

        

             int age;

             char name[50];

             int test;

         }p2;

 

        p2就是这个匿名结构体类型的变量,可以在大括号后面写多个变量名;

 

 

 5.结构体变量之间赋值都是值传递,比如说变量a赋值给变量bb变了后,a不会改变;

 

 6.结构体作为函数的参数是值传递,也就是说函数内改了形参的值,实参不会改变;

 

7.结构体成员里面还可以定义一个别的结构体变量;

 

--------------------------

typedef:

给某个人类型起别名;

语法 typedef类型别名;

 

例:typedefint i;

注意:

typedef struct{

        

             int age;

             char name[50];

             int test;

         }p2//类型;

当前面加了typedef大括号后面的标示符才是类型,否则都是变量。

0 0
原创粉丝点击