草庐IT

$双指针

全部标签

c++ - 不使用指针遍历 C 风格的数组

我正在学习指针算术,并且有一段代码让我错误了很长一段时间。任何帮助将不胜感激。(我在SO上找不到它)intarr[]={1,2,3,4,5};for(inti=0;i我无法理解我在代码块中遇到的错误。我收到此声明。error:lvaluerequiredasincrementoperand|||===Buildfinished:1errors,0warnings===|在这段代码中,我必须在不取消引用或使用[]运算符的情况下迭代数组。 最佳答案 您在尝试递增数组时收到此错误。它是无效的,因为在C++中,数组的名称可以隐式转换为指向第

c++ - C 与 C++ 中的指针

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:WhydoesC++requireacastformalloc()butCdoesn’t?这段特殊的代码在C中运行良好,但在编译为C++程序时会出现编译错误。#include#includeintmain(){int(*b)[10];b=calloc(20,sizeof(int));return0;}C++编译错误是:test.cpp:Infunction‘intmain()’:test.cpp:9:28:error:invalidconversionfrom‘void*’to‘int(*)[10]’[-fp

c++ - C++11 中的泛型函数指针

我目前正在用C++x0编写一个方法执行队列。我已经实现并验证了基本的队列机制,但想用一个选项来修改它,让push()自动删除所有以前对特定方法的调用:queue.push(this,&Obj::foo,1);queue.push(this,&Obj::foo,2);queue.push(this,&Obj::foo,3);应该和调用一样queue.push(this,&Obj::foo,3);到目前为止,我的代码如下所示:队列.h:#pragmaonce#include#includeusingstd::vector;usingstd::function;usingstd::bind;

c++ - 应该在无指针类中声明/实现析构函数吗?

应该在无指针类中声明/实现析构函数吗?有/没有它有什么好处吗?我的男人是:classPoint{public:intX,Y;Point(intx,inty);//~Point(void);//shouldIuncomentitandimplementemptydestructor?} 最佳答案 Shoulddestructiorbedeclared/implementedinpointerlessclass?不需要[条件适用]。编译器会为你生成一个。只有当你想执行一些特定的事情时,你才应该提供一个,而编译器不会。例如:资源管理(内存

c++ - "non-const lvalue reference to type cannot bind"引用错误(类型&)但指针错误(类型*)

我收到此错误“输入‘Cell’的非常量左值无法使用此代码绑定(bind)到‘Cell*’类型的临时对象:classRegionHolder{public:RegionHolder(Region&Region1):m_RegionCellNOO(&(Region1.m_NOO))~RegionHolder();protected:Cell&m_RegionCellNOO;//differenceishere};但不是这个:classRegionHolder{public:RegionHolder(Region&Region1):m_RegionCellNOO(&(Region1.m_NO

c++ - MISRA 发出的文字零而不是空指针常量警告

我有这个功能:voidInitS(unsignedint&numS){//thisfunctionreturnsacontainerforunsignedint//butithasacastforintnumS=props.numOfS();if(numS>0){..}}它编译但给我这个MISRA警告:MISRA-C++Rule4-10-2(required):Literalzero(0)shallnotbeusedasthenull-pointer-constant.现在,如果numShots是一个“真正的”指针,我可以将0更改为NULL。但numShots是引用,我应该将其视为in

c++ - STL 容器和内存管理——对象列表与对象指针列表

我已经仔细研究了关于这个主题的其他一些问题,但(据我所知)没有一个解决如何正确地从包含动态分配内存的STL对象列表与包含动态分配内存的STL对象列表中删除项目的问题不包含动态分配的内存。我想使用对象列表。以这个对象为例(它不包含动态分配的内存):classMyPoint{public:MyPoint(int_x,int_y){x=_x;y=_y;}private:intx;inty;};所以我可能会创建一个对象列表(不是指向它们的指针),向其中添加内容,然后删除一个元素:listmyList;myList.push_back(MyPoint(3,4));myList.push_back

c++ - 在没有 typedef 的情况下在 C++ 中返回函数指针时出错

我试图在不使用typedef的情况下返回指向函数的指针,但编译器(gcc)发出了一个奇怪的错误,就好像我无法进行那种设置一样。备注:使用typedef代码有效。代码:voidcatch_and_return(void(*pf)(char*,char*,int&),char*name_one,char*name_two,int&number)(char*,char*,int&){pf(name_one,name_two,number);returnpf;}错误:'catch_and_return'声明为返回函数的函数你能给我解释一下为什么编译器不允许我这样做吗?谢谢!

c++ - 有没有一种 C++ 方法可以使用 iostream 来格式化地址和指针?

我有类似的东西unsignedx=16;unsigned*p=&x;std::cout输出:0000000000000010000x7fffc35ba784ostream::operator 最佳答案 像这样使用internal:#include#includeintmain(){unsignedx=16;unsigned*p=&x;std::cout这给出:0000000000000010000x7fffd123c1a40x007fffd123c1a4 关于c++-有没有一种C++方法

c++ - 使用指针遍历多维数组

如果你可以像这样使用指针遍历数组:for(int*iter=arr;iter!=std::end(arr);++iter){//code}如何使用指针遍历多维数组(不使用auto)?编辑:我假设这是一个int[][],例如{{3,6,8},{2,9,3},{4,8,2}} 最佳答案 如果您将数组声明为arr[][],是的,您可以这样做,因为它们是按顺序存储在内存中的。你可以这样做:for(int*iter=&arr[0][0];iter!=&arr[0][0]+col*row;iter++)//...