如何获取指针的值?

shiqing0477 2011-03-28 01:19:04
我希望获取指针所指向的地址值(不是指针所指向地址所存放的内容),再把该地址值每4位取出来,转成ascii码存于一个字符数组中,程序如下:

typedef unsigned char INT8U;

INT8U* GetAddrStr(void *p)
{
INT8U *StrAddr;

*StrAddr=(INT8U)((p&0xf0000000)>> 28)+0x30;
*(StrAddr+1)=(INT8U)((p&0x0f000000)>> 24)+0x30;
*(StrAddr+2)=(INT8U)((p&0x00f00000)>> 20)+0x30;
*(StrAddr+3)=(INT8U)((p&0x000f0000)>> 16)+0x30;
*(StrAddr+4)=(INT8U)((p&0x0000f000)>> 12)+0x30;
*(StrAddr+5)=(INT8U)((p&0x00000f00)>> 8)+0x30;
*(StrAddr+6)=(INT8U)((p&0x000000f0)>> 4)+0x30;
*(StrAddr+7)=(INT8U)(p&0x0000000f)+0x30;
*(StrAddr+8)='\0';
return StrAddr;
}

但是编译时报错说:非法使用指针..请问应该如何取出指针的值的呢??
...全文
1162 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
shiqing0477 2011-05-12
  • 打赏
  • 举报
回复
结贴,谢谢~~
我不懂电脑 2011-03-30
  • 打赏
  • 举报
回复
指针的值就是他指向变量的地址,直接打印就可以了。
//---------------------------------------------------------------------------

#pragma hdrstop

#include <tchar.h>
#include <stdio.h>
//---------------------------------------------------------------------------

#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
{
int b = 198;
int *a = &b;

printf("%0x, %0x, %d, %d\n", a, &b, *a, b);
scanf("%*c");

return 0;
}
//---------------------------------------------------------------------------
lhy 2011-03-28
  • 打赏
  • 举报
回复
用BinToHex
My_Love 2011-03-28
  • 打赏
  • 举报
回复
typedef unsigned char INT8U;  

INT8U* GetAddrStr(void *xp)
{
static INT8U StrAddr[16];
unsigned p = (unsigned)xp;
*StrAddr=(INT8U)((p&0xf0000000)>> 28)+0x30;
*(StrAddr+1)=(INT8U)((p&0x0f000000)>> 24)+0x30;
*(StrAddr+2)=(INT8U)((p&0x00f00000)>> 20)+0x30;
*(StrAddr+3)=(INT8U)((p&0x000f0000)>> 16)+0x30;
*(StrAddr+4)=(INT8U)((p&0x0000f000)>> 12)+0x30;
*(StrAddr+5)=(INT8U)((p&0x00000f00)>> 8)+0x30;
*(StrAddr+6)=(INT8U)((p&0x000000f0)>> 4)+0x30;
*(StrAddr+7)=(INT8U)(p&0x0000000f)+0x30;
*(StrAddr+8)='\0';
return StrAddr;
}
DISINHUI 2011-03-28
  • 打赏
  • 举报
回复
数据长度不等。

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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