C++ 将指针的地址转换为字符串,并为指针指定字符串地址?

C++ 将指针的地址转换为字符串,并为指针指定字符串地址?,c++,pointers,C++,Pointers,我对指针的地址有问题 类别: class name{ public: name(); } 我想获取name类指针的地址,并将其转换为字符串 name* p=new name(); const char* add=(const char*)&p; printf("%s \n",add); // input is ������� . how to transfer add to string to use printf("%s \n",add) and result is 0xb

我对指针的地址有问题

类别:

class name{
public:
    name();

}
我想获取name类指针的地址,并将其转换为字符串

name* p=new name();
const char* add=(const char*)&p;
printf("%s \n",add); // input is ������� . how to transfer add to string to use printf("%s \n",add) and result is 0xbfa0f108 ??
printf("%p \n",add); //input is 0xbfa0f108 


name *q;
q= add; // i want to assign the address of q to point to p. indirect via add.

我需要怎么做?我是C++的新手;p> 如果要打印指针的地址,只需使用&

更改:

printf("%s \n",add);
致:

或者最好使用cout//因为这个问题被标记为c++

cout<<&add;
您可以通过将q强制转换为name来指定q作为要添加的引用*

q= (name *) &add;  // not a good practice 
cout<<q<<endl;
q=(名称*)&add;//这不是个好习惯

cout要获取指向name类的指针地址字符串,只需编写:

name* p = new name(); // pointer to name class
const char* add = reinterpret_cast<const char*>(&p);
std::string str = add;
在上面的示例中,pntr现在是对象的地址。当在语句的右侧使用时,&符号指定您想要一个地址。在语句左侧使用时,指定对另一个对象的引用(&S):

type& ref = object;
在本例中,ref现在是对对象的引用。将ref设置为另一个值将使object设置为该值

当您有一个指针,并且希望该指针指向的对象时,只需使用*符号取消对指针的引用:

type* pntr = &object; // pntr is the address pointing to object
std::cout << *pntr << std::endl; // dereferences pntr to retrieve object

你的问题毫无意义。首先,为什么需要将
name*
指针间接转换为
char*
?不能使用
%s
打印,只能使用
%p
。如果没有难看的类型转换,则无法将其分配给
q
,例如:
q=*((name**)add)。你到底想完成什么?这听起来像是一个问题。请澄清你的问题。你想打印指针吗?真正的问题是:我想在C中获取一个对象的地址,并将地址传递给Lua,然后将地址返回到C。我需要将地址指针转换为字符串,以便传递给Lua。否,行q=(name*)&add;不抛出任何错误,q将获得地址添加,您可以通过cout@vishal我的错!我错过了&。另一方面,当我使用实际类型时,q=(char*)为我添加编译。我认为如果您试图在不使用const_cast的情况下丢弃constness,编译器会抛出一个错误。。。Alexander Bolinsky:真正的问题是:我在使用Lua脚本,我用C++生成了一个对象,我想把对象的地址传递给Lua,然后把地址从Lua返回到C++。我应该那样做吗?我不知道如何将一个对象传递到Lua,并将该对象从Lua传递到C++。@ VISHAL:我在尝试,我发现它不能得到地址的添加。
type* pntr = &object;
type& ref = object;
type* pntr = &object; // pntr is the address pointing to object
std::cout << *pntr << std::endl; // dereferences pntr to retrieve object
static_cast<type*>(pointerToSomeOtherType);
reinterpret_cast<type*>(pointerToSomeOtherType);
const_cast<type*>(pointerToSomeOtherType);
dynamic_cast<type*>(pointerToSomeOtherType);
(type*) pointerToSomeOtherType;