class和struct对变量的放置顺序是否有保证?

firendlys firendlys 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
由于某些特殊需要,我要在class或struct里面定义一个变量名不确定的指针变量.
所以,为了确定这个变量,我要求这个指针变量必须放在class或者struct的结尾处(开头的地方有特殊用途,不能放在开头)
同时,这个class或struct的大小是不确定的.

那么,我请问,可不可以通过直接定位到这个class最后的位置,来直接读写这个指针变量呢?

(我觉得,如果编译器在编译的时候对变量的定义顺序完全按照代码的顺序来编译,那么这种方法应该是可以的)

示例:

class CTest
{
public:
int a;
int b;
int c;
// 这里还有若干个变量,且个数和占用空间是不确定的.

void *ptr;//最后有一个指针,但这个指针的变量名是不确定的.
// 同时,这个指针也不能放在最开头的位置
};

int main()
{

//定义变量:
CTest test;

test.ptr = (void *) 0x123;//测试值

//读写ptr的方法:
void **thisptr = (void**) (((DWORD)&test) + (sizeof(CTest) - sizeof(void*)));
*thisptr = (void *) 0x456;

return 1;
};

//我想问一下,这种读写方法能不能在windows下正常使用?(包括 vs2003 ~ vs2012 )
//我目前只试过在 vc6 下通过.

//或者说,有没有更好的方法?


...全文

相关推荐

详解C语言Struct(结构体)系列之一

详解C语言Struct(结构体)系列的第一部分的全部文章合集,具体分析文章见: http://blog.csdn.net/column/details/structure.html 第二季近期会很快提供

tcpipstack

C++:05---class和struct

C++被称为“C with class”,可见在C++中class是多么重要,与class类似的一个结构就是struct了,struct最早是在C语言中出现的,在C++中对struct的...

前网易架构师-高司机

C# Struct的内存布局问题解答

介绍了C# Struct的内存布局问题解答,有需要的朋友可以参考一下

weixin_38673694

顺序栈的表示和实现源码

顺序栈的实现源码,包括初始化、去栈顶元素、进栈、弹栈等操作。

algorithm_only

EDA/PLD中的如何在C++中struct与Class的的区别

从语法上,在C++中(只讨论C++中)。class和struct做类型定义时只有两点区别:   (一)默认继承权限。如果不明确指定,来自class的继承按照private继承处理,来自struct的继承按照public继承处理;   (二)成员的默认访问权限。class的成员默认是private权限,struct默认是public权限。   除了这两点,class和struct基本就是一个东西。语法上没有任何其它区别。   不能因为学过C就总觉得连C++中struct和class都区别很大,下面列举的说明可能比较无聊,因为struct和class本来就是基本一样的东西,无需多说。但这些

weixin_38558655
评论 132
收藏 已收藏
分享
返回顶部
firendlys
C++ 语言 65,214 成员 250,514 内容