初学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赋值给变量b,b变了后,a不会改变;
6.结构体作为函数的参数是值传递,也就是说函数内改了形参的值,实参不会改变;
7.结构体成员里面还可以定义一个别的结构体变量;
--------------------------
typedef:
给某个人类型起别名;
语法 typedef类型别名;
例:typedefint i;
注意:
typedef struct{
int age;
char name[50];
int test;
}p2//类型;
当前面加了typedef大括号后面的标示符才是类型,否则都是变量。
- 初学C语言----结构体
- 初学C语言之结构体
- C初学->结构体
- 初学C语言----指针深入了解 :结构体指针
- C语言_初学结构体_plusC14.2
- C语言结构体
- C语言:结构体
- C语言:结构体
- C语言--结构体
- c语言结构体
- c语言 结构体
- C语言结构体
- C语言结构体
- C语言--结构体
- c语言 结构体
- c语言----结构体
- C语言--结构体
- c 语言 结构体
- Linux添加用户启动项
- 主工程模块yycgproject三层构建
- C#、VB.NET 使用System.Media.SoundPlayer播放音乐
- 初学C语言--字符串语法及函数
- Opencv3.0.0静态库调用必须opencv_ffmpeg300.dll的问题!
- 初学C语言----结构体
- Queue depth 增益(SSD/flash,etc)
- 初学C语言----枚举
- 【Android studio】Rendering Problems:classes could not be instantiated 解决方法
- 简单排列组合
- 图像处理函数详解——imadjust
- __stdcall、__cdecl、CALLBACK、WINAPI区别
- linux显示运行脚本进程号的方法
- 自我介绍