初学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赋值给变量b,b变了后,a不会改变;
6.结构体作为函数的参数是值传递,也就是说函数内改了形参的值,实参不会改变;
7.结构体成员里面还可以定义一个别的结构体变量;
--------------------------
typedef:
给某个人类型起别名;
语法 typedef类型别名;
例:typedefint i;
注意:
typedef struct{
int age;
char name[50];
int test;
}p2//类型;
当前面加了typedef大括号后面的标示符才是类型,否则都是变量。