关于结构体声明的一些写法

关于结构体声明的一些写法:
第一点:
#include<stdio.h>
struct square
{
  int (*add)(int a,int b);
};
int square_add(int a,int b)
{
  return a + b;
}

int main()
{
  struct square stu={
  .add=square_add,
  };

  //与下面无区别
  stu.add=square_add;
  return 0;
}

第二点:
位域是指信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几 个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二进制位域来表示。
struct bs
{
  int a:8;int b:2;int c:6;
}data;
说明data为bs变量,共占2个字节。其中位域a占8位,位域b占2位,位域c占6位。

时间: 2024-12-06 11:32:43

关于结构体声明的一些写法的相关文章

c语言----结构体--声明及定义

试着写点东西,主要为了巩固学习过的东西. 结构体?C语言中的结构体主要用来表达.定义一些自己想要的类型,例如日期,身份信息等等. 日期:2017-09-10 身份信息:姓名fakke,年龄23,身高180: 可以通过struct来实现.(个人感觉有点像python的字典) 定义的方式: 第一步:声明结构类型: struct   类型名字{ 变量类型1   变量名: 变量类型2  变量名: ... 变量类型3  变量名: }: 第二步:  2定义新的变量 struct date 变量名; 第三步:

C语言结构体声明中冒号的使用(占位符) &amp; C结构体的乱序初始化

有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位.例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可.为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为"位域"或"位段".所谓"位域"是把一个字节中的二进位划分为几 个不同的区域,并说明每个区域的位数.每个域有一个域名,允许在程序中按域名进行操作.这样就可以把几个不同的对象用一个字节的二进制位域来表示.一.位 域的定义和位域变量的说明位域定义与

结构体声明与内存对齐

1.结构体的声明: 1)struct Student{ int stu_id; char name[25] int age; char sex;  }; Student student1, student2; 2)struct Student{ int stu_id; char name[25] int age; char sex;  }student1,student2; 3)struct { int stu_id; char name[25] int age; char sex;  }stu

结构体里面包含指向本结构体的指针的写法

1. 第一种写法 1 typedef struct st_net_packet 2 { 3 struct st_net_packet *next; 4 uint32_t msgid; 5 6 uint8_t* buffer; 7 uint32_t length; 8 9 }st_net_packet_t; 原文地址:https://www.cnblogs.com/429512065qhq/p/8337011.html

Swift入门篇-结构体

前面主要是介绍swift语言中基本类型的用法,今天给大家介绍的是swift的结构体的用法,swift中结构体的用法和其他语言的用法,还有不太一样,不过您多敲几遍,就可以理解结构体,结构体在ios开发中是灰常重要的一部分,如果您很好的掌握结构体,在后面ios开发中,会理解的更加清楚. 一:结构体声明 格式: struct 结构体名 { } 说明: 1: struct 是定义结构体的关键字 例子 /* 1:struct 是结构体的关键字 2:student 结构体名称 3:student() 创建一

C语言-结构体-联合体

结构体 在Java中,我们要表示一个复合的数据类型就会使用对象去封装.而C就有结构体. 结构体是C语言中自定义的数据类型,是一组变量的集合,有别于数组,数组仅限于同一种数据类型,而结构体可以是任何数据类型,包括数组.结构体里面的每一个变量或者数组都是结构体的成员. 下面来看看结构体的基本使用 14-18行,定义了一个名称为Person的结构体,结构体里面有 age,money,sex 三种数据类型: 20-24行,是结构体的声明一个名为 P 的 Person 变量,并赋值: 25-27行,是结构

关于结构体

1.结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,叫做结构. typedef struct People { int a; char b; double c; }P: 其中:struct是关键词, People是标签, a b c是成员, P是此结构体声明的变量. 于是在声明变量的时候就可:P p1; 这里的P实际上就是struct People的别名.P==struct People 另外这里也可以不写People(于是也不能struct People p1;了,

C 入门 第七节 结构体

//声明结构体  关键字  struct // 声明一个用于描述学生对象的结构体类型// 声明成员变量时不能赋值,因为这是在声明结构体类型// struct student// {//     int num; //学号  //成员变量之间用分号;隔开//     char name[30]; //姓名  //必须指定字符数组的大小//     char sex;  //性别//     float score;  //分数// }; //不要忘了 ; // typedef struct stu

关于数组、结构体的初始化{0}

关于数组.结构体的初始化 一直以来,初始化变量和数组常采用定义时赋值的方法,今天在定义一个结构体的时候发现了一些问题,查了下相关资料发现以往的使用确实有些误区,一直没有注意到,于是搜集了下零散的资料在此记录一下. 一.以往常用的初始化方式: 1 int a=0; /*a初始化为0*/ 2 int b[10]={0}; /*b中全部元素初始化为0*/ 想必一直这样使用也确实不会发现问题,按照惯性思维,把0换成1就是把全部元素初始化为1了!然而事实却并非如此,请看下面这段代码↓ 1 #include