[struct]C语言编程结构体的学习

原创 2015年07月11日 00:17:51
    问题描述:C语言中的结构体可以构造复杂的数据类型。例如有时函数需要传递的参数太多,此时可以考虑用结构体作为参数传入。C语言中的结构体利用函数指针和一般变量可以模拟面向对象语言编程中的属性和方法。结构体的使用非常灵活,下面记录一些结构体使用的较为基础的内容。结构体在其他一些语言中有时被称为记录、字段。
    声明:在花括号中间,每个结构代表一个作用域,可以防止命名冲突,
struct {
    int number;
    int *ptr;
    char name [NAME_LEN + 1];
}part1,part2;
    如果常用到,可以使用类型定义这样声明,
typedef struct {
    int number;
    int *ptr;
    char name [NAME_LEN + 1];
}part_t;
part_t  part1,part2;
    还有一种是结构标记声明,
struct part{
    int number;
    int *ptr;
    char name [NAME_LEN + 1];
};
struct part  part1, part2;
    初始化:可以在声明的同时初始化,如
part_t  part1 = {22, &item, "Good boy"};  // 这种初始化和数组很相似。
    也可以指定初始化:
part_t  part2 = {.number=33, .ptr=&item1, .name="Another boy"};
    相关操作:
    (1)成员访问,用“.”操作符,如part2.number = 25;
    (2)结构体间赋值,如“part2 = part1;”,直接将结构体part1的内容赋值给了part2,但数组中“array1 = array2;”是不允许的。如果要对数组赋值,可以利用结构体的这个特性,将数组放入结构体中,然后对结构体赋值,则包含在结构体中的数组也会跟着被赋值了。
    (3)作为函数参数传入或返回类型的结构体数据,可以考虑用指针来实现(当然直接用结构体传值是可以的),但是这样做可以避免结构体包含存储空间较大造成副本拷贝需要的空间占用,另外在文件操作中,打开一个文件进行操作,打开文件函数返回的就是一个结构体指针,对该文件的操作用指针即可,可以避免文件副本的重复拷贝。
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C语言编程入门——结构体(上)

     在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据...

C语言学习——结构体(struct)的使用

结构化可以创建一个新的数据类型,得到的数据类型类似于java中的对象。 定义新类型 使用新类型 单个变量 初始化 赋值 输出 多个变量 初始化 赋值 输出 关于新类型的一些其他应用 新类型的变量之间可...

C语言学习笔记(十二) -结构体 Struct

定义结构体变量/* 结构体 自定义的一种类型称为构造类型,在C语言中称为结构体 定义结构体: struct [结构体名] { [成员列表;] }; 定义...

C语言结构体(Struct)——摘自C语言学习网

在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据。结构体的定义形式为: struct 结构体名{ 结构体所包含的变量或数组 }; 结构体是一种集合,它里面包含了多个变...

C语言结构体 —— sizeof(struct)

这个内容也是很重要的一个,所以,这里对一些问题和规律做一个总结。 涉及到的几个概念: 内存对齐:      现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从...

C#语言struct结构体适用场景和注意事项

我们有时感觉结构比较简单的类改为struct可能会提高性能,但这种感觉在绝大多数情况下其实是错误的。那么我们自己在编写代码的时候究竟在什么情况下适合定义struct而不是class呢?

C语言中结构体struct类型使用

C语言中结构体struct类型使用

Python使用struct模块转换C语言结构体,打包、解包二进制数据

本文参考:https://docs.python.org/2/library/struct.html#struct-format-strings本文是我使用socket测试网络接口写的消息头,其中包含...
  • JIA227
  • JIA227
  • 2017-06-12 20:34
  • 1210
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)