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

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-02 07:25:03  来源:igfitidea点击:

How to assign pointer address manually in C programming language?

cmemorypointers

提问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

基本上在嵌入式平台中,我们直接使用地址而不是名称