我在C中有一个函数,它获取指针并打印其反汇编代码。
void print_dis(void *addr) {
print_dis(addr);
}
一切正常,但现在我想从命令行传递这个内存地址为argv。
如何传递内存地址并将其分配给指针,使其运行如下:
my_prog 0x1234567890abcd
并且print_dis将此地址作为addr
您可以将字符串从argv [1]转换为unsigned long,并使用强制转换操作符(void *)将其分配给通用指针,如下面的示例所示。请注意,这很危险!
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
void* ptr = (void*) strtoul(argv[1]+2,0,16);
printf("%lX", (unsigned long) ptr);
}.
/*
Output:
/a.out 0x123456789abcdef
Result ptr:123456789ABCDEF
*/
如果我误解了你的问题,请原谅我,但是你可以拿指针并使用printf("%p", ptr);
。或者,如果您的意思是让您的程序写入另一个程序的stdin,您可以使用linux管道。
您还可以使用reinterpret_cast<WhateverType>(source);
从argv获取char *地址的值