CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

如何在把数组地址指向0xFFFFFF处?

楼主caterpillarlover()2005-11-01 19:19:06 在 C/C++ / C语言 提问

char   array[100];  
   
  如何在把数组array地址指向0xFFFFFF处? 问题点数:50、回复次数:17Top

1 楼xiaocai0001(高楼目尽欲黄昏/梧桐叶上萧萧雨)回复于 2005-11-01 19:25:30 得分 0

数组名是不可以更改地址的.Top

2 楼doway(john)回复于 2005-11-01 19:27:17 得分 0

不成吧?我猜。Top

3 楼jsjjms(专心研究嵌入式)回复于 2005-11-01 20:19:38 得分 0

定义了一个数组,那么其地址已经固定了吧?Top

4 楼cleanduo(子风)回复于 2005-11-01 20:38:56 得分 0

bu   zhi   daoTop

5 楼goodluckyxl(被人遗忘的狗)回复于 2005-11-01 21:15:45 得分 0

char   array[100];    
  //你在嵌入式编译器下可以设置   好像+at×××可以指定地址  
  //而在PC下都使用虚拟地址   而且数组都作为const在函数入口处就给出了栈地址  
  //是无法修改的    
   
  char*   array可以指向你要的地址   但是也只是虚拟地址Top

6 楼codearts(代码艺术)回复于 2005-11-01 21:28:26 得分 0

我目前知道的是:不行  
   
  Top

7 楼wuwen19(按时打发)回复于 2005-11-01 21:29:51 得分 0

markTop

8 楼wuwen19(按时打发)回复于 2005-11-01 21:39:43 得分 0

应该是不可以的。。。  
   
  main()  
  {  
                  char   str[100];  
   
                  long   i;  
   
                  printf("str   addr   =   <%x>\n",str);  
   
                  printf("str   addr   =   <%d>\n",str);  
                  printf("0xffffff   =   <%d>\n",0xffffff);  
   
                  i   =   (int)&str[0]   -   (int)0xFFFFFF   ;  
   
                  printf("i   =   <%d>\n",i);  
   
                  str   -   i   ;  
   
                  printf("str   addr   =   <%x>\n",str     );  
   
                  printf("str   -i   addr   =   <%x>\n",str     -   i   );  
  }  
  Top

9 楼foxdeng(江洋大刀)回复于 2005-11-02 10:01:53 得分 0

完全可以啊,使用关键字const就可以达到要求,你可以把代码写成这样:  
  char   *   const   array=(char   *)0xffffff;  
  array就成了一个常指针,可以完全看成一个数组,而且,任何试图改变array的代码,都会让编译器报错Top

10 楼wuwen19(按时打发)回复于 2005-11-02 10:26:22 得分 0

他是想把定义好的一个数组地址,在程序过一段时间后在一个特定时刻付成0xffffff  
  刚开始的时候又不想0xffffff,  
  怎么办?Top

11 楼Zark(金陵五月)回复于 2005-11-02 11:04:21 得分 0

实现这一"奇怪"要求的目的是什么?  
  Top

12 楼foxdeng(江洋大刀)回复于 2005-11-02 11:24:26 得分 0

那种做法是错误的,如果我手下的程序员喜欢这么做,我的第一反应就是:解雇!Top

13 楼eastnofail(Char *)回复于 2005-11-02 11:53:42 得分 0

楼上真是牛人!!中国未来的BILL啊!!!振兴民族软件业的希望!!Top

14 楼ugg(逸学堂(exuetang.net))回复于 2005-11-02 12:02:24 得分 0

C++机制中有一种机制叫“放置机制”  
  用来解决两种问题  
  1:把你的定义对象放到指定地址上去。  
  2:在指定地址上定义你的对象。  
  给出的方法如下  
  void   *p   =   (void)0X0008f;  
  A   *p1   =   new   (p)A  
   
  下面方法是  
  重载一个new,把X对象放到(a1)对象地址内;  
  class   Arena   { public: void*   allocate(size_t); void   deallocate(void*);  
  //   ... };  
  void*   operator   new(size_t   sz,   Arena&   a) { return   a.allocate(sz); }  
  Arena   a1(some   arguments); Arena   a2(some   arguments);  
  现在我们可以写:  
  X*   p1   =   new(a1)   X;  
  Y*   p2   =   new(a1)   Y;  
  Z*   p3   =   new(a2)   Z;  
   
   
  Top

15 楼codearts(代码艺术)回复于 2005-11-03 15:35:54 得分 0

楼上的只不过是placement   new而已,并未达到在0xfffff申请一个数组的功能  
   
  void   *p   =   (void)0X0008f;  
  A   *p1   =   new   (p)A;   //p指向的这块内存地址又不是你的,怎么能乱写?  
  Top

16 楼Eastunfail(龍子龍孫) (Serpent's Embrace)回复于 2005-11-03 15:47:14 得分 0

Win32   API:  
  LPVOID   VirtualAlloc(  
      LPVOID   lpAddress,   //这个参数指定分配的内存在哪个地方  
      SIZE_T   dwSize,  
      DWORD   flAllocationType,  
      DWORD   flProtect  
  );  
   
  char   *p=VirtualAlloc((LPVOID)0xffffff,100,MEM_COMMIT,PAGE_READWRITE);  
  于是就在0xffffff分配了char   p[100]了  
  Top

17 楼megatops(猪哥)回复于 2005-11-03 15:51:39 得分 0

用指针吧,这种情况何必用数组。Top

相关问题

  • 如何把一个数组指向一个string的地址?
  • 指向数组的指针数组……
  • 数组的地址问题
  • 关于指向数组的指针
  • 怎么使用一个指向类中的数组的数组指针 ????急!!!!
  • 求助:指针数组指向的动态数组的内存释放问题
  • 请教数组名的地址问题
  • 二维数组地址问题
  • 请教:二位数组、指针、指针数组以及指向数组的指针
  • 数组和指针的问题,不是说数组名就是数组的首地址吗?

关键词

  • 数组
  • xffffff
  • 地址
  • 指向
  • arena
  • 指定
  • 对象
  • 机制
  • array
  • str

得分解答快速导航

  • 帖主:caterpillarlover

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo