Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用指针c指向某个地址#_C#_C_Pointers - Fatal编程技术网

C# 用指针c指向某个地址#

C# 用指针c指向某个地址#,c#,c,pointers,C#,C,Pointers,我有一个开放的c程序,地址中存储了一个随机变量a=20。比如说1000。我希望我的c#程序能够读取此地址(1000)值。因此,在我的c#程序中,显示值20。我已经有了地址,但我不知道如何查看此地址值,有什么帮助吗 int *ptr = (int *) 0x67a9; *ptr = 0xaa55; 我觉得这段c代码会有所帮助 我正在使用Visual Studio 2015。那么您希望您的C在内存地址1000中存储一个值,并且希望您的C程序能够读取内存地址1000并看到相同的值 不幸的是(对你来说

我有一个开放的c程序,地址中存储了一个随机变量a=20。比如说1000。我希望我的c#程序能够读取此地址(1000)值。因此,在我的c#程序中,显示值20。我已经有了地址,但我不知道如何查看此地址值,有什么帮助吗

int *ptr = (int *) 0x67a9;
*ptr = 0xaa55;
我觉得这段c代码会有所帮助


我正在使用Visual Studio 2015。

那么您希望您的C在内存地址1000中存储一个值,并且希望您的C程序能够读取内存地址1000并看到相同的值

不幸的是(对你来说)它不是这样工作的——每个exe都有自己的地址空间,所以每个exe中的地址1000将映射到不同的物理地址,你不应该在这个级别上胡闹

有几种进程间通信(IPC)方法可以用来实现您想要的(如共享内存)

编辑 David Heffernan正确地指出,注释中的
ReadProcessMemory
确实允许您将内存区域从一个进程映射到另一个进程。我必须承认我不知道这件事!还有一个问题,你不能只使用内存地址1000,你必须从一个方向到另一个方向获得一个有效的地址,所以我不确定它在一般情况下有多有用。
这可能会给你一些提示:

上用C#中的指针进行谷歌搜索
C#中的整个范例与C#中的完全不同。。。在翻译代码之前,您可能想先了解一些关于C语言中basic的更多信息。“指针”很少被使用。。。大多数时候,我们不使用“指针”来显示“值”。那么,我们大多数时候使用什么呢?Google:“在C#中传递参数”一个进程中的指针在另一个进程中并不指向同一事物。也就是说,C#程序中的地址0x67A9与C程序中的地址0x67A9不同,除非它们实际上是同一程序的不同部分。这很有道理,但如果我得到进程句柄,地址1000对两者都是相同的呢?另外,谢谢,我将阅读所有关于itA的信息。句柄通常只是一个ID,而不是一个地址。再一次。两个进程都有自己的地址空间。即使使用共享内存,同一块也可能在第一个进程中映射到地址1000,在第二个进程中映射到地址2020。这两个进程都有地址1000(以及x86的任何地址0-2^32),但不能保证这两个进程中的任何一个进程都会将内存映射到地址空间的这一部分,不同进程拥有相同信息的可能性基本为0。这是不完整的。ReadProcessMemory存在并执行您所说的无法执行的操作。