can*_*tan 1 c++ recursion smart-pointers c++11
我正在尝试使用c ++智能指针反向打印一个char数组.我遇到两个问题.1是我正在尝试调试的运行时错误,另一个是每次我必须增加shared_ptr的事实我必须使用get()方法.
我正在粘贴我的两个功能.一个只使用指针反转字符串的人.和一个使用共享ptr.
int display_string_reversep(char* astring)
{
char* achar = astring;
if((*achar) != '\0')
{
char* x= achar;
x++;
display_string_reversep(x);
cout<<(*achar);
}
return 0;
}
int display_string_reverseup(shared_ptr<char> astring)
{
shared_ptr<char> achar(astring);
//if((*achar) != '\0')
if(achar != nullptr)
{
if(*(achar.get()+1) != '\0')
{
shared_ptr<char> x(achar.get()+1);
//x++;
display_string_reverseup(x);
}
cout<<(achar);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我是c ++ 11的新手,这只是我自己完成的一个小练习.到目前为止,互联网没有让我增加共享指针的其他方法.在那儿 ?
char astring [] = {'F','e','l','l','o','w','\0'};
display_string_reversep(astring);
display_string_reverseup(shared_ptr<char>(astring));
Run Code Online (Sandbox Code Playgroud)
不要增加shared_ptr.
A shared_ptr是指向内存节点的引用计数指针.其目的是delete在引用计数降至零时的节点.它不是原始指针的替代品.
A shared_ptr可以指向一个数组.在这种情况下,您索引到数组.不要增加shared_ptr.
如果你有一个指向char数组的智能指针,以便在完成时删除数组,你可以复制它的原始指针并递增它.