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;