C语言中如何指定数组的首地址在指定的地址

lightyacht 2007-11-03 08:41:37
比如我定义了数组array0
int array0[9];

我想让array0的首地址是指定地址0x1000;

该怎么做呢
...全文
3557 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
CedarDiao 2007-11-05
  • 打赏
  • 举报
回复
那就建议LZ看看分散加载(scatter loading)技术吧,用它解决这样的问题实在简单
另外,嵌入式下的问题并不适合这里问。。。
推荐一个嵌入式论坛:http://bbs.21ic.com/club/bbs/list.asp?boardid=35
CedarDiao 2007-11-03
  • 打赏
  • 举报
回复
在嵌入式系统中通常有这样的需求,解决办法是用分散加载。
如果是在win32环境,LZ还是放弃吧。。。
baihacker 2007-11-03
  • 打赏
  • 举报
回复
如果是C++重载new........在自己指定的buffer上分配还是可以的
_石头_ 2007-11-03
  • 打赏
  • 举报
回复
另外,就是仅仅确定那个可以写还不够,因为不是系统分配的空间(也就是说系统不知道那个地址被人为的当做内存空间使用了),有可能又把它分配给别的函数或者变量,这样一来数据就完全不对了!
ttlyfast 2007-11-03
  • 打赏
  • 举报
回复
建议你用汇编搞
_石头_ 2007-11-03
  • 打赏
  • 举报
回复
同意过儿的观点:-----只能在特殊的场合用("通常是一个你能够确定没问题的首地址"),而且只能是指针!
建议搂住尽量避免这样用,弄不好整个系统就瘫痪了!
SHINERSDFA 2007-11-03
  • 打赏
  • 举报
回复
同意2楼的观点,前提必须确定开辟的内存空间没问题,否则直接用指针赋值很可能覆盖其他一些有用的地址,很容易跑飞,甚至崩溃。
独孤过儿 2007-11-03
  • 打赏
  • 举报
回复
我说过了啊,这种写法只是在某些特定的场合才这样写的

像嵌入式里面,确实有这样写的时候
babala512 2007-11-03
  • 打赏
  • 举报
回复
这样的程序,谁敢用
羽中漫步 2007-11-03
  • 打赏
  • 举报
回复
数组一旦定义了,地址就不能更改了,否则不崩才怪。建议用指针来实现上述的功能。
ckt 2007-11-03
  • 打赏
  • 举报
回复

他定义数组就是要写的吧
你的地址并不是系统分配的
简单的数组赋值操作,如何执行
g961681 2007-11-03
  • 打赏
  • 举报
回复
这么搞,很容易搞死的哦~~~~~~~~
youyifang 2007-11-03
  • 打赏
  • 举报
回复
ls正解。
独孤过儿 2007-11-03
  • 打赏
  • 举报
回复 1
声明一个指针,然后强制转换给它赋首地址,再读写

这个首地址通常是一个你能够确定没问题的首地址,像0x1000这个地址就不可写,甚至读都不行;而0x10000这个地址就可

读写

通常在嵌入式里面有时候用楼主这种方法,下面是我电脑上读写 0x10000 的代码

#include <stdio.h> 

int main()
{
char* p = (char*)0x10000;
int i;
for (i = 0; i < 9; i++)
{
printf("%c ", p[i]);
p[i] = '$';
}
printf("\n");
for (i = 0; i < 9; i++)
{
printf("%c ", p[i]);
}

return 0;
}
ckt 2007-11-03
  • 打赏
  • 举报
回复
不行吧
lightyacht 2007-11-03
  • 打赏
  • 举报
回复
我就是在嵌入式下使用的

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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