草庐IT

指针认证

全部标签

c++ - 如何在 C++ 中重新传递函数指针

首先,我对函数指针及其可怕的语法非常陌生,所以玩得开心。我正在编写一个方法来根据传入的函数过滤位图中的所有像素。我已经编写了取消引用它并在像素缓冲区中调用它的方法,但我的位图类中还需要一个包装器方法它接受函数指针并将其传递。我该怎么做?语法是什么?我有点难过。这是我的代码删除了所有不相关的位并合并了文件(读取所有初始化填充的变量等)。structsColour{unsignedcharr,g,b,a;};classcPixelBuffer{private:sColour*_pixels;int_width;int_height;int_buffersize;public:voidFil

c++ - 为什么函数形参的数组类型转换为指针?

下面函数的输出是“int*”,表示形参被转换为整型指针。这样的设计有什么必要的理由吗?为什么不能保留数组类型?//theoutputis"int*"#includevoidFunc(intar[5]){printf("%s\n",typeid(ar).name();}intmain(){intar[5];Func(ar);return0;} 最佳答案 Isthereanynecessaryreasonforthisdesign?这是C的历史包袱。据说1这很方便,因为您无论如何都不能按值传递数组。如果要保留类型,可以使用引用或指针:v

c++ - 如何以及何时正确使用 *this 指针和参数匹配?

当我浏览同事编写的代码时,在某些地方,他们使用:this->doSomething();//-->caseAdoSomething();//-->caseB事实上我不确定*this指针的用途...:(另一个参数匹配问题:obj.doOperation();//-->caseC(&obj)->doOperation();//-->caseD其实这两种情况都在执行想要的操作,难道只是一种让代码看起来更复杂的方法吗?您对以上两个问题有何建议?什么时候使用它们比较合适?为什么? 最佳答案 这不是您问题的答案,而是说明两个片段可能做不同的事情

c++ - 将值从 char 指针复制到 char 数组

我有一个指针*ip_address_server保存服务器的ip地址:in_addr*address=(in_addr*)record->h_addr;char*ip_address_server=inet_ntoa(*address);很明显,当我使用printf打印它的值时,它打印得很好。printf("paddress%s",ip_address_server);但是现在如果我声明一个大小为20的数组来保存该值,那么我需要将内容从指针复制到该数组。charhost_name[20];为了复制我使用了for循环的值。但是我后来打印的值不是正确的值。for(inti=0;ip_add

c++ - 使用智能指针实现容器

好的,所以每个人都知道应该像瘟疫一样避免原始指针,而更喜欢智能指针,但是这个建议在实现容器时是否适用?这就是我想要完成的:templateclassAVLTreeNode{public:Tdata;unique_ptr>left,right;intheight;}Unique_ptr会使容器函数编写起来更加麻烦,因为我不能让多个原始指针以优雅的方式临时指向同一个对象。例如:unique_ptr>rotate_right(unique_ptr>n1){unique_ptr>n2=n1->left;n1->left=n2->right;n2->right=n1;//n1mustnowber

c++ - 初始化多态指针容器

我可以初始化多态boost::ptr_vector与boost::assign::list_of?#include#includeboost::ptr_vectorls=boost::assign::list_of(newAnt)(newBee)(newCat);编译失败:error:nomatchforcallto'(boost::assign_detail::generic_list)(Bear*)'替换boost::ptr_vector与std::vector给出相同的错误。两个人建议手动提供模板参数Animal*至list_of:boost::assign::list_of(n

c++ - 从 C++ 函数返回指针的推荐方法?

我有一个传递给一系列函数的指针,其中一个函数返回一个地址并将该地址分配给指针。在Stackoverflow上寻求帮助后,collect_file_path方法有一个类型为QStringList**的参数。虽然我明白这是怎么回事,但我在我拥有的任何教科书中都没有遇到过这种符号,而且它看起来很难看。我想要一些关于其他程序员如何实现我在下面的代码中所做的事情的建议/反馈。您会使用QStringList**还是其他方法?我希望我问的是有道理的。我当前的代码是:voidThreadWorker::run(){QStringList*file_list;collect_file_paths(&fi

c++ - 破译 C/C++ 函数指针类型定义的工具

我记得曾经看到一个网站,它破译了复杂的C++typedef,包括返回函数指针的函数指针,这些函数返回一个数组......它将把这样的定义变成可读的英文文本:»指向函数的指针,返回一个int指针数组,以一个long和一个回调函数(以一个int为参数)«。(类似的东西)typedefint*(*f)(long,void(*)(int))[];有人记得那个工具/网站吗?非常感谢任何提示 最佳答案 我想你在找https://cdecl.org/.您可以在https://github.com/ridiculousfish/cdecl-bloc

c++ - 可以在地址 0 分配一个有效的指针吗?

在任何“主要平台”(出于这个问题的目的,我将其定义为Windows、Mac和Linux)上,是否可以将有效分配的指针分配到程序地址空间中的地址0(因此弄乱了与NULL的比较?)该标准甚至允许编译器/平台在地址0处进行有效分配吗? 最佳答案 C++标准允许这样做,但这样的指针不会与文字0(NULL指针常量)进行比较。但是,主要操作系统中的用户模式应用程序永远不会有一个位于0的有效指针,甚至在-65536到65535范围内(以帮助检测NULL指针的偏移量)。在大多数情况下,0作为可用地址只存在于嵌入式系统中,很少出现在PC操作系统的内核

c++ - 指向类型不完整的 typedef 的指针

有什么方法可以声明一个指向不完整类型的指针,该类型将由实现中的typedef设置?这是我想要的例子:#ifndefTEST_H#defineTEST_Hnamespacestd{classstring;//THISWON'TWORK!}structTest{std::string*value;};#endifstring是basic_string的类型定义,因此示例中的代码将不起作用。我可以声明一个不完整类型的std::basic_string,但这看起来像是一种解决方法。我知道编译器不会为typedef生成符号,对于不同文件中的不同类型,可能会在typedef中使用相同的名称。但由于