C语言 C语言如何手动分配指针地址?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/4532000/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to assign pointer address manually in C programming language?
提问by Irakli
How do you assign a pointer address manually (e.g. to memory address 0x28ff44) in the C programming language?
如何0x28ff44在 C 编程语言中手动分配指针地址(例如分配给内存地址)?
回答by T.J. Crowder
Like this:
像这样:
void * p = (void *)0x28ff44;
Or if you want it as a char *:
或者,如果您希望将其作为char *:
char * p = (char *)0x28ff44;
...etc.
...等等。
If you're pointing to something you really, really aren't meant to change, add a const:
如果你指的是你真的,真的不想改变的东西,添加一个const:
const void * p = (const void *)0x28ff44;
const char * p = (const char *)0x28ff44;
...since I figure this must be some kind of "well-known address" and those are typically (though by no means always) read-only.
...因为我认为这一定是某种“众所周知的地址”,并且这些地址通常(尽管并非总是)只读。
回答by zsalzbank
Your code would be like this:
你的代码是这样的:
int *p = (int *)0x28ff44;
intneeds to be the type of the object that you are referencing or it can be void.
int需要是您正在引用的对象的类型,也可以是void.
But be careful so that you don't try to access something that doesn't belong to your program.
但要小心,不要尝试访问不属于您的程序的内容。
回答by kamal
int *p=(int *)0x1234 = 10; //0x1234 is the memory address and value 10 is assigned in that address
unsigned int *ptr=(unsigned int *)0x903jf = 20;//0x903j is memory address and value 20 is assigned
Basically in Embedded platform we are using directly addresses instead of names
基本上在嵌入式平台中,我们直接使用地址而不是名称

