C语言结构体
来源:互联网 发布:vary支持那些软件 编辑:程序博客网 时间:2024/04/29 04:33
1 结构体
数组是相同类型元素的集合。
结构体可以由多种不同类型的数据类型组成的新的数据类型
2 结构体声明
struct Student { int age; charchar *name; };
3 结构体变量的定义
1、先定义结构体,再定义变量
struct Student { int age; charchar *name; }; struct Student stu;
2、定义结构体的同时定义变量
struct Student { int age; charchar *name; } stu;
3、直接定义结构体变量
struct { int age; charchar *name; } stu;
4 结构体成员
1 成员类型
任何变量类型都可以作为结构体成员。
struct List{ int a[20]; float b; long *c; struct List *d; //struct List d是非法的} ;
2 成员访问
结构体成员通过(.)操作符访问。
struct List list;list.a;list.b;list.d.c; ///操作符的优先级是从左到右
3 指针访问
void fun(struct List *p); //指针需要进行间接访问(*p).a; //因为(.)操作符的优先级高于(*),所以要用括号// ->操作符p->a;p->d.a;
4 不完整声明
struct B; //不完整声明struct A{ struct B *b;};struct B{ struct A *a;};
A结构体中有B结构体,所以A需要B的不完整声明。
5 结构体的初始化
1、声明变量的同时初始化
struct Student { int age; charchar *name; }; struct Student stu = {22, "hello"};
2、先声明变量,再逐一初始化
struct Student stu; stu.age = 22; stu.name = "hello";
3、定义结构体的同时进行变量定义和初始化
struct Student { int age; charchar *name; } stu = {22, "hello"};4、非顺序初始化
struct Student stu = {.name = "hello", .age = 22};
注意:如果没有初始化结构体,所有变量会自动的有默认值
6 参数传递
typedef struct{int a;float b;float c;} A;void printA(A a){ printf("%d",a.a);}int main(){ A a = {1}; printA(a);}
这样虽然正确,但是效率很低,C语言传值调用,会拷贝整一份的结构体,上例中总共要拷贝12个字节。
typedef struct{ int a; float b; float c;} A;void printA(A *a){ printf("%d",a->a);}int main(){ A a = {1}; printA(&a);}
而这里通过指针传递的话,指针要比结构体小的多,所以效率会高。
0 0
- C语言结构体
- C语言:结构体
- C语言:结构体
- C语言--结构体
- c语言结构体
- c语言 结构体
- C语言结构体
- C语言结构体
- C语言--结构体
- c语言 结构体
- c语言----结构体
- C语言--结构体
- c 语言 结构体
- c语言结构体
- C语言-结构体
- c语言结构体
- C语言结构体
- c 语言 结构体
- 芯片解密 深圳橙盒科技专业DS28E01芯片解密技术面世
- java 实现一个自定义的Lock类
- hdu 5046 Airport(Dancing Links重复覆盖)
- sql语句性能优化
- 同表复制修改日期的procedure
- C语言结构体
- 陈怡暖:央行降息,黄金白银关注国内实体节奏
- 前台页面控制:根据日期-当前日期的值来控制颜色
- C C++中struct的区别
- 代码添加effect 效果
- mysql性能调优
- android中的Section ListView
- mysql 帮助文档学习
- UIWindow和UIView