char* 大小_指针的偏移与指针的大小

1.指针所占的空间的大小:由指针本身决定,跟指针指向的对象的类型无关,一般是4个字节,也有可能是8个字节(64位的编译器),win32平台下,指针的空间大小4个字节

f02e09a03dda581d7d13796b608b288a.png

2.指针的偏移是由定义指针时指针指向的对象的类型决定,而不是实际上指向的对象的类型决定,一般情况下,定义是指针指向的对象的类型跟实际上指针指向的对象的类型保持一致

#include <stdio.h>

int main()

{

int b = 109;

// b 是空间,b的类型 int

//&b : 表示b空间的首地址,&b --->指针--->数据类型 *

//&b : int *

int* p = &b; //定义指针指向的对象的类型 int

//实际上指向的对象的类型 int

char *pf =(char *)&b; //定义指针指向的对象的类型 char

//实际上指向的对象的类型 int

//指针+整数: 表示指针的偏移,偏移的字节数

//偏移的字节数,由定义是指针指向的对象的类型决定

printf("%#pn",p);

printf("%#pn",pf);

printf("%#pn",&b);

printf("%#pn",p+1);

printf("%#pn",pf+1);

printf("%#pn",&b+1);

unsigned int a = 0XAABBCCDD; //交换高八位低八位

unsigned char *pt = &a;

unsigned char tmp;

tmp = *pt;

*pt = *(pt+3);

*(pt+3) = tmp;

printf("%#Xn",a);

}

int main()

{

int b = 123456789;

char *pm = (char *)&b;

int *ph = &b;

short *pk = &b;

//pm = pm+1; //

//*pm = *pm+1;

pk = pk +1; //偏移2个字节

*pk = *pk + 2;

//char [-128,127]

//printf("%dn",*pm); // 读取pm所指向的空间的内容 206-256=-50

printf("%dn",*pk);

printf("%dn",*ph); // 读取ph所指向的空间的内容 123457045

printf("%dn",b); //b 的值 123457045

}

微信:xydf321456

QQ:754634522

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这段代码定义了一个名为 `Context` 的类,它包含了一些成员变量和一个构造函数。以下是对该类的不同部分的解释: - `LockManager *lock_mgr_`:这是一个指向 `LockManager` 对象的指针,表示上下文中的锁管理器。锁管理器可能用于协调并发访问和保护共享资源。 - `LogManager *log_mgr_`:这是一个指向 `LogManager` 对象的指针,表示上下文中的日志管理器。日志管理器可能用于记录事务操作以支持事务的持久性和恢复性。 - `Transaction *txn_`:这是一个指向 `Transaction` 对象的指针,表示上下文中的事务。事务是一系列操作的逻辑单元,通常在数据库系统中使用。 - `char *data_send_`:这是一个指向字符数组的指针,表示上下文中的数据发送。这个成员变量可能用于在数据通信中传递数据。 - `int *offset_`:这是一个指向整型变量的指针,表示上下文中的偏移量。它可以用来记录某种位置或偏移的值。 - `bool ellipsis_`:这是一个布尔类型的成员变量,表示是否存在省略号。它可能用于标记上下文中是否存在省略或缺失的信息。 - 构造函数:构造函数接受多个参数,并使用成员初始化列表来初始化上下文对象的成员变量。构造函数中的参数包括 `LockManager *lock_mgr`、`LogManager *log_mgr`、`Transaction *txn`、`char *data_send` 和 `int *offset`。其中,`data_send` 参数有一个默认值为 `nullptr`,`offset` 参数是一个指向 `const_offset` 的指针。构造函数还将 `ellipsis_` 初始化为 `false`。 综上所述,这个 `Context` 类定义了一个包含多个成员变量和构造函数的上下文对象。这些成员变量可能用于在程序中传递和存储相关的上下文信息,如锁管理、日志管理、事务、数据发送等。构造函数用于初始化上下文对象的成员变量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值