C高手来看一下关于结构体和指针以及宏定义

C/C++ > C语言 [问题点数:0分]
等级
本版专家分:0
结帖率 0%
等级
本版专家分:86256
勋章
Blank
红花 2011年3月 C/C++大版内专家分月排行榜第一
2010年9月 C/C++大版内专家分月排行榜第一
Blank
黄花 2015年1月 C/C++大版内专家分月排行榜第二
2012年3月 C/C++大版内专家分月排行榜第二
2011年11月 C/C++大版内专家分月排行榜第二
2010年6月 C/C++大版内专家分月排行榜第二
2010年5月 C/C++大版内专家分月排行榜第二
Blank
蓝花 2011年4月 C/C++大版内专家分月排行榜第三
2011年2月 C/C++大版内专家分月排行榜第三
2010年8月 C/C++大版内专家分月排行榜第三
等级
本版专家分:621
等级
本版专家分:0
xueliangyzy

等级:

C/C++常用宏定义,注意事项,宏中###的用法

总结下宏函数的不同之处,以供大家写代码时使用,这段总结摘自《C和指针》一书。 当然宏定义非常重要的,它可以帮助我们防止出错,提高代码的可移植性可读性等。 下面列举一些成熟软件中常用得...

C语言 结构体与结构体指针用法总结

C语言开发中,结构体用到的机会很多。所谓结构体,就是定义一种里面包含多种元素的变量。 我们来看一个简单的例子。比如你想定义一个书名列表然后为每本书创建书名作者作为书的信息。结构体变量定义如下: ...

C语言--通过结构体成员的地址获取结构体变量的地址

在内存中,编译器按照成员列表顺序分别为每个结构体变量成员分配内存,但由于 C 的内存对齐机制以及不同机器间的差异,各个成员之间可能会有间隙,所以不能简单的通过成员类型所占的字长推断其它成员或结构体对象...

通过结构体成员的地址获取结构体变量的地址

在内存中,编译器按照成员列表顺序分别为每个结构体变量成员分配内存,但由于 C 的内存对齐机制以及不同机器间的差异,各个成员之间可能会有间隙,所以不能简单的通过成员类型所占的字长推断其它成员或结构体对象...

结构体成员变量偏移量的三种解法以及对成员变量进行修改

示例1我们先来定义一下需求:已知结构体类型定义如下:struct node_t{ char a; int b; int c; };且结构体1Byte对齐#pragma pack(1) 求:结构体struct node_t中成员变量c的偏移。注:这里的偏移量指的是相对于...

c语言结构体模拟c++对象的方法,并实现this指针

先说一下结构体模拟对象的基本思路。 1. 在结构体定义好函数指针。 2. 在结构体外面定义好对象的方法。 3. 在结构体初始化的时候把这些方法的地址赋值给对应的函数指针。 4. 通过函数指针调用函数,并把结构体...

c++根据结构体成员指针找到结构体指针

使用CONTAINING_RECORD,可以直接根据结构体成员指针找到结构体指针。为什么这样就能得到结构体指针?这个得益于结构体在申请内存空间是一段连续的地址,我们可以通过其中某个成员变量的地址,减去该成员的偏移...

根据结构体成员变量的地址得到结构体起始地址

给定一个结构体定义type,这个结构体中某个成员变量的名字member以及它的地址ptr,如何得到包含此成员变量的结构体的地址? struct father_t...

深入浅出剖析C语言函数指针与回调函数(二)

从上节我们了解到,函数指针和回调函数在开发者用户之间的一个例子,那么这节,我将引用Linux内核中文件操作结构体来详细的说明。我们首先看到这个结构体,这段代码位于linux内核的include/linux

STM32 嵌入式学习入门(0)——C语言基础复习

包括位操作、条件编译、结构体和结构体指针、typedef声明类型、以及extern变量声明、static关键字等内容。  本文并没有将相关C语言知识点介绍地很详细,毕竟这么多知识点要想掌握绝对不是几篇文档就能掌握的。...

结构体遇上宏定义以及函数指针的高级写法(结构体中能用宏定义一个函数?)

一、结构体中可以定义一般的宏定义 如:struct aaa { #define STATUS_1 100 #define STATUS_2 200 #define STATUS_3 300 ........ }; 首先,这里的宏定义是在预编译阶段完成的,编译器此时并不知道什么结构体...

c++::获取结构体中某 个成员相对结构体起始位置的偏移

我们使用offsetof,这个具体是什么?怎么用? 接下来我详细说明: 【offsetof的定义】:  在MSDN上是这样定义的:size_t offsetof( structName, memberName );  1)第一个参数是结构体的名字,第二...

关于嵌入式开发的C语言基础总结

一、位操作C语言支持的6种位操作符如下:1.不改变其他位的值的状况下,对某几个位进行设值。方法:先对需要设置的位用&操作符(对应位&0)进行清零操作,然后用|操作符设值(对应位|你想要设定的值...

结构体深度剖析(内存对齐,对齐参数,偏移量)

一、了解结构体C语言中,除了最常见用数据类型,字符类型(char)、整数类型(short、int、long )、实型(float、double),,,,,,最常见也是最经典的还有一种数据类型,那就是结构体。 二、结构体经典面试题: (1)、...

Linux双向循环链表的实现

链表是一种重要的数据结构,应用的非常广泛。链表分为单向链表与双向链表,一般的实现就是在...} 但是linux内核中的实现确有点特殊他是通过独立定义一个链表结构,通过结构体中内嵌这个结构完成的,这样就实现了链

container_of 用法解析

在学习Linux驱动的过程中,...该宏定义在include/linux/kernel.h中,首先贴出它的代码: /** * container_of - cast a member of a structure out to the containing structure * @ptr: the pointer to the

理解 linux contain_of()

linux contain_of() 宏 ...1.该宏定义在include/linux/kernel.h中 439/** 440 * container_of - cast a member of a structure out to the containing structure 441 * @ptr: 

C语言结构体实现共有、私有的思考(参考strongswan代码)

最近在strongswan源代码,看到strongswan的代码框架很有意思,用C语言实现类的思想。当我们编写完一个模块,我们需要提供的是H的文件给其他模块使用,我们希望H文件中就只能包含一些公有函数,一些类型的申明,...

container_of(ptr, type, member)宏定义解析

container_of()宏定义的功能是根据一个已知结构体成员的指针和变量名得出宿主结构体的地址

结构体定义 typedef struct 用法详解用法小结

若struct node {}这样来定义结构体的话。在申请node 的变量时,需要这样写,struct node n; 若用typedef,可以这样写,typedef struct node{}NODE; 。在申请变量时就可以这样写,NODE n; 区别就在于使用时,是否...

Linux内核学习之list_entry --- 用C语言实现泛型编程

list_entry() #define list_entry(ptr, type, member) \  ((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member))) ptr是指向list_head类型链表的指针,type为一个结构,而member为结构type中的一...

郝斌C语言视频教程

这部郝斌c语言自学教程共180讲,由郝斌老师主讲,课堂讲解全程动手敲代码,讲解细致,对于重要知识点的讲解不厌其烦,是一个难得的C语言入门教程。希望大家能从郝斌老师那里学到更多的c语言的相关知识。 C语言是一...

学习Windows程序设计第一件要做的事情

Windows程序设计是使用C语言和Windows的API函数进行编程的,而MFC则是封装了WindowsAPI一些琐碎的细节,使用的是C++语言,是面向对象的;因为MFC并不是一个良好的对象模型,使用MFC会在很多方面出现点问题,如果对...

sk_buff 整理笔记(一、数据结构)

以及分析这几个结构体的关系与一个sk_buff数据包的形成其data指针的变化。 (1)sk_buff->data_len:只计算分片中数据的长度,即是分片结构体中page指向的数据区长度。这个在分片结构体中会再详细讲解下。 (2)sk_...

宏定义结构体某个变量相对其偏移量的问题

用一个宏定义FIND求一个结构体struct里某个变量相对struc的编移量 如:struct student  {  int a;  char b;  double c;  }  则:  FIND(student,a); //等于0  FIND(student,b)

C语言中的复合数据类型

一、结构体 1.作用:封装数据,把多种不同的数据类型放在一起 2.定义:一般放在全局,定义时不要忘记在结尾的“}”后加上“;...②给结构体中的指针变量成员赋值时,要先给指针分配空间,否则它会使一个野指针

sizeof进行结构体大小的判断

typedef struct{ int a; char b;}A_t;typedef struct{ int a; char b; char c;}B_t;typedef struct{ char a; int b; char c;}C_t;void main(){ char*a=0; cout cout cout 

container_of()详解

当你开始内核编程的时候,你会随便看看代码,那么你可能很快就会碰到这个神奇的预处理代码结构。 它是用来干嘛的?正如它的名称那样,它获取的是它的容器的地址。该函数需要三个变量--指针,容器的类型,指向成员的...

container_of 详解

// container_of的功能:从结构体类型(type)的一个成员(member)指针(ptr),反推得到该结构体指针 // 其实现由两个分号隔开的语句组成,首先用typeof关键字,得到member成员的类型typeof(member),为了访问 // ...

container_of 函数

container_of  2010-05-23 22:34:32| 分类: 默认分类 | 标签: |字号大中小 订阅 ...该宏定义在include/linux/kernel.h中,首先贴出它的代码: /** * container_of - cast a member of a str

相关热词 c#用函数打印菱形 c# 文件名合法 c# 枚举名称 c# out ref c#五子棋人机 c# ef 事务删除 c# this 属性 c#注册代码没有数据库 c#限定时间范围 c#控件跟随窗口大小变化