[100分急求] Qt在Linux桌面系统上 怎么将指针转成int ?

KaKaKaKa 2011-08-17 12:31:21
郁闷啊
我定义了一个简单的结构
MyStruct
{
int id;
QString name;
}

MyStruct *my = new MyStruct();

然后我想看下它的内存情况:

int x = (int)my; //这就是将结构指针转成int呀。 NND 该行在Windows上可以,在Linux桌面下 居然编译不过

printf("%d",x);

===============================================
各位可否遇到过 请求帮助 急啊
...全文
315 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
tingsking18 2011-08-17
  • 打赏
  • 举报
回复
这些写没问题,是不是有其他的错误?
把你的编译错误信息发上来看看。
dbzhang800 2011-08-17
  • 打赏
  • 举报
回复
指针转整数,难道不是用C\C++标准中的 intptr_t 或 uintptr_t ?
dbzhang800 2011-08-17
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 cpio 的回复:]

long只是gcc才根据平台不同取4字节和8字节长度,vc不管是64位还是32位,都是4字节长度
[/Quote]

主要是C没有规定这些类型的长度,

所以标准中后来才有了:

int8_t
uint8_t
int32_t
...

这些东西
cpio 2011-08-17
  • 打赏
  • 举报
回复
long只是gcc才根据平台不同取4字节和8字节长度,vc不管是64位还是32位,都是4字节长度
KaKaKaKa 2011-08-17
  • 打赏
  • 举报
回复
so de si ne
KaKaKaKa 2011-08-17
  • 打赏
  • 举报
回复
问题是解决了
指针值到底存的是int 还是long 觉得应该跟系统相关的
不知大家还有何见解 一起分享 均分
gemfield 2011-08-17
  • 打赏
  • 举报
回复
C 语言中,指针和整数之间的转换经常用到(多用于需要精确控制数据在内存中的精确布局时),在 32 位平台上,由于指针类型的字宽和 int 相同,所以我们不太在意这个问题。但是到了 64 位平台上,由于目前几乎所有 64 位系统都采用 LP64 模型,既整数依旧是 32 位,而指针是 64 位的。intptr_t 这个数据类型就成了安全跨平台编程的保证。

参考:http://www.civilnet.cn/bbs/browse.php?topicno=7118
dbzhang800 2011-08-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 yangjianpro_hotmail 的回复:]


终于知道肿么肥四喽





int x = (int)my;

Linux是64位的系统,貌似64位系统上指针值貌似不是int
我用 long x = (long)my;

就OK了


[/Quote]
标准中的 intptr_t 或 uintptr_t 不就是用来解决这种问题的么?为什么大家都不用呢?
KaKaKaKa 2011-08-17
  • 打赏
  • 举报
回复
谢谢楼上 那个只是我这里写的时候丢了

主要原因是系统是:

64位系统下的指针值 貌似是long 而非int
所以我转换中他说会损失精度
cpio 2011-08-17
  • 打赏
  • 举报
回复
MyStruct
{
int id;
QString name;
}

这样也可以?

应该

struct MyStruct
{
int id;
QString name;
};
KaKaKaKa 2011-08-17
  • 打赏
  • 举报
回复

终于知道肿么肥四喽





int x = (int)my;

Linux是64位的系统,貌似64位系统上指针值貌似不是int
我用 long x = (long)my;

就OK了

bianyuanshanghai 2011-08-17
  • 打赏
  • 举报
回复
貌似不是大问题
KaKaKaKa 2011-08-17
  • 打赏
  • 举报
回复
这种 如果报 也应该报警告 怎么还错误
KaKaKaKa 2011-08-17
  • 打赏
  • 举报
回复
编译说
错误:MyStruct * 转成 int 会丢失精度
canmeng 2011-08-17
  • 打赏
  • 举报
回复
对啊,这几句看起来没问题的。

16,211

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧