草庐IT

Pointers

全部标签

c++ - C++中的字符指针

我对C++中的字符指针有疑问。每当我们在C++中创建一个字符指针时:char*p="Howareyoudoing",p应该包含存储值“你好吗”的内存地址。但是,我对示例代码和输出感到困惑。为什么cout返回整个字符串?它应该给出内存地址的值。其次,为什么cout只给出字符串的第一个字符?代码:#includeusingnamespacestd;intmain(){constchar*str="howareyou\n";inti[]={1,2,3};cout输出:howareyou0xbfac1eb0h 最佳答案 如果你想打印地址,那

c++ - 指针是否保证 > 某个值?

在C++中,当我执行new(甚至malloc)时,是否可以保证返回地址将大于某个值?因为...在这个项目中,我发现使用0-1k作为枚举非常有用。但如果有可能获得那么低的值(value),我不想那样做。我唯一的目标系统是带有OSwindow/linux和mac的32位或64位CPU。标准是否对指针有任何说明?Windows或Linux是否说明了它们的C运行时以及最低内存地址(对于ram)是什么?-edit-我最终修改了我的new重载以检查地址是否大于1k。如果没有,我会调用std::terminate。 最佳答案 就标准而言,没有什么

c++ - ofstream 指针的 vector

这是我的问题,我需要创建X个文件并根据不同的因素写入它们,我的解决方案是创建一个像这样的流指针vector#include#include#include#include#includevectorfiles;files.resize(SplitVec.size()-4);for(i=0;i(i);cout直到这一部分,它创建的文件都很好,后来在我写给它们的程序中,这也很好,我的问题是当我想关闭对象时,如果我使用:for(i=0;i我收到以下错误:Infileincludedfrommain.cpp:14:./methyl.h:298:error:requestformember'cl

c++ - 释放后分配给指针

我正在看《编程面试暴露》一书中的以下代码:booldeleteStack(Element**stack){Element*next;while(*stack){next=(*stack)->next;free(*stack);*stack=next;}returntrue;}我对C++或C不太熟悉,所以这可能是个愚蠢的问题,但在释放指针后给它赋值不会导致问题吗? 最佳答案 在您的示例中,*stack是一个指针。释放它指向的内存然后将指针分配给新变量是完全安全的。唯一不安全的是在释放后取消引用*stack。free(*stack);n

c++ - 使用双指针为结构成员赋值

我有一个函数,它接受一个指向结构的双指针并赋值。但是,在尝试访问成员member1时,我得到了“访问冲突写入位置...”。这是我的代码:structmystruct{unsignedintmember1;void*data;};intmain(){mystruct**foo=newmystruct*;bar(foo);}voidbar(unsignedintval,mystruct**foo){(*foo)->member1=val;} 最佳答案 您刚刚创建了一个新的mystruct指针。这意味着:你被分配了一个内存块,大到足以容纳

c++ - 全局指针是否初始化为零?

我想知道cpp标准对全局初始化是怎么说的。我找到了this回答很有帮助,但没有提到指针类型。能否保证这会奏效?char*myptrintmain(){if(myptr==NULL){std::cout 最佳答案 是的,在命名空间范围(在您的情况下为全局命名空间)定义的指针保证被初始化为该类型的正确空指针值。对于标准引用,3.6.2[basic.start.init]/2"Variableswithstaticstorageduration...shallbezero-initialized(8.5)"8.5[dcl.init]/6"

c++ - 将 vector 迭代器转换为指针

我有一个vectorstd::vector。我想迭代vector以找到匹配项,如果找到,我想返回指向元素的指针,如下所示:constint*findint(std::vector&v,inta){std::vector::const_iteratori1,i2;i1=v.begin();i2=v.end();for(;i1!=i2;++i1){if(a==*i1){return(i1);}}return(0);}使用GNUg++2.95.3编译器编译和工作正常,但不能使用GNUg++4.9.2编译并出现以下错误:error:cannotconvert'std::vector::cons

c++ - vector 迭代器转换

嘿,在C++中,我有一个类型的vector:vectormyVector;其中,我将派生类的(push_back)指针插入其中。现在,我想弹出它的元素,所以我这样做:vector::iteratoriter;for(iter=myVector.rbegin();iter!=myVector.rend();iter++){//butbeforeIpopit,Ineedtoshutdownitdown//soIcastthis//butthisway,I'munabletocallthefunction(DerivedClass*(*iter))->Shutdown();myVector.

c++ - 在 C++ 类中,使用 "this"访问成员变量有什么区别

我做了一个简单的类来代表一扇门。为了返回变量,我使用this指针访问它们。关于仅访问变量,使用this指针和不使用指针访问它们有什么区别?classDoor{protected:boolshut;//trueifshut,falseifnotshutpublic:Door();//Constructsashutdoor.boolisOpen();//Isthedooropen?voidOpen();//Opensthedoor,ifpossible.Bydefaultit//isalwayspossibletoopenagenericdoor.voidClose();//Shutsth

c++ - 编辑函数中指针指向的位置

我在C++中有一个指向结构对象的指针。node*d=head;我想通过引用将该指针传递给函数并编辑它指向的位置。我可以传递它,但它不会改变初始指针指向的位置,而只会改变函数中的本地指针。函数的参数必须是指针,对吗?在如何更改它以显示给同一结构的不同对象之后? 最佳答案 您有两个基本选择:通过指针传递或通过引用传递。通过指针传递需要使用指向指针的指针:voidmodify_pointer(node**p){*p=new_value;}modify_pointer(&d);引用传递使用&:voidmodify_pointer(node*