草庐IT

指针认证

全部标签

c++ - C++ 中 void 指针的缺点

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。据我所知,C++void*中的void指针可以指向任何东西。如果我想在不使用某种继承的情况下开发解决方案,这可能(对我而言)非常有用。但我想知道的问题是这种方法是否存在任何性能缺陷?

c++ - 对C++中的char指针的困惑

我是c++语言的新手,我正在尝试理解指针的概念。我有一个关于字符指针的基本问题,我所知道的是,指针是一个存储地址值的变量,所以当我这样写的时候:char*ptr="hello";根据我的基础知识,我认为在=之后应该有一个地址分配给指针,但是这里我们分配的是“hello”,它是一组字符。那么这是什么意思?指针ptr是否指向存储“hello”的地址?还是它自己存储问候语?我很困惑,希望你们能帮助我..提前致谢。 最佳答案 ptr保存文字"hello"的存储地址。在本例中,它指向一个字符串文字。它是位于静态(最常见的只读)内存中的不可变字

C++ 指针延迟声明语法

C++新手,有一个(可能相当愚蠢的)问题:我已经看到在两种上下文中都使用了**运算符(我的理解是取消引用取消引用):字符**arglistchar**参数列表语法之间是否存在有意义的差异,或者它们都完成了同一件事? 最佳答案 它们完全一样。但在这种情况下,它们并不是“取消引用一个取消引用”,它们定义了一个指向char的指针。我个人更喜欢char**arglist因为**就像类型的一部分,它就像:typevar_name;//where`type`is`char**`and`var_name`isarglist但是,另一方面,它可能会

c++ - 当类型转换 void 指针指向对象时不调用析构函数

示例voidfunc(void*data){CResource*resource=(CResource*)data;deleteresource;//~CResourcenevercalled.resource=NULL;}请帮我解决这个问题。 最佳答案 从其他答案中提取的CResource析构函数可能未被调用的可能原因总结:不完整类型一个可能的原因是您只声明了CResource类型,而没有定义:classCResource;voidfunc(void*data){CResource*resource=(CResource*)dat

全球首个云渗透测试认证专家课程发布!腾讯安全领衔编制

2月20日,国际云安全联盟CSA发布了“云渗透测试认证专家CCPTP”课程体系,这是全球首个云渗透测试能力培养课程及人才认证项目,有效地弥补了云渗透测试认知的差距和技能人才培养的空白。腾讯安全在该项目中担任核心课程编撰单位。CSA是全球中立权威的非营利产业组织,在全球设立四大区,包括美洲区、欧非区、亚太区和大中华区,现有1000多家单位会员,13万多名个人会员,CSA以其中立性、权威性和专业性,在云计算领域享有盛誉。近年来,CSA陆续推出CCSK、CCSSP、CCAK、CZTP、CDSP、CDPO等认证培训课程,覆盖云安全、零信任安全、数据安全等,这些课程均体现了同时期业内最顶尖水平,有效地推

c++ - 引用指针的可选参数?

如何将第二个参数声明为可选?templateinlinevoidDelete(T*&MemoryToFree,T*&MemoryToFree2=){deleteMemoryToFree;MemoryToFree=NULL;deleteMemoryToFree2;MemoryToFree2=NULL;}我在=运算符之后尝试了几种方法,例如NULL、(T*)NULL等。这可以做到吗?编译器让我这样做的唯一方法是使用重载...templateinlinevoidDelete(T*&MemoryToFree,T2*&MemoryToFree2){deleteMemoryToFree;Memor

c++ - 使用指针交换值

我有这段代码inti=5;intk=7;int*iPtr;int*jPtr;int*kPtr;iPtr=&i;kPtr=&k;我需要使用指针交换i和k。我就是这样做的:*jPtr=*kPtr;*kPtr=*iPtr;*iPtr=*jPtr;这是最好的方法,还是有更好的方法? 最佳答案 在我看来,在C++中做到这一点的最佳方法是使用std::iter_swap():#include//...int*iPtr=&i,*kPtr=&k;std::iter_swap(iPtr,kPtr);您可能认为这是一种矫枉过正,但如果您包括我会不同意反

c++ - C/C++ 指针,ptr+1 = ptr +1 byte 还是 ptr+1*sizeof(pointer_type)?

有any_type*ptr=(any_type*)malloc(sizeof(any_type)*size);my_ptr=ptr+1;memcpy(dst,my_ptr,sizeof(any_type));my_ptr会指向ptr之后的1个字节,还是指向ptr之后的sizeof(any_type)字节?对齐选项如何影响答案?有符号/无符号类型是否不同? 最佳答案 指针运算是在指针的静态类型[*]的大小上进行的,所以它会有效地添加sizeof*ptr。成员的对齐方式将作为类型的对齐方式(对象末尾的填充)考虑到对象的大小。struct

c++ - 当我们分配一个指针为 NULL 时会发生什么?

我有一个指向一些数据的指针。现在我已经创建了一个类似的指针。现在这个新指针被分配给旧指针。如果我删除旧的会发生什么?A*a=newA();A*b=a;a=NULL;“a”和“b”会发生什么?此外,如果我做以下事情:A*a=newA();A*b=a;deletea;而且我还想知道当我们赋值为NULL时指针会发生什么。A*a=newA();a=NULL;a仍然指向一些内存还是什么都不指向? 最佳答案 A*a=newA();A*b=a;a=NULL;在此之后,b仍然指向第一行分配的对象。a现在什么都不指向了。您仍然可以通过b指针“使用”该

c++ - 将指针设置为 NULL 会影响您指向的原始项目吗?

我有一个指向链表中节点的指针:structnode*temp=head.next如果我将此指针设置为NULL,例如:temp=NULL;这也会影响我指向的节点吗?即head.next现在是NULL? 最佳答案 这也会影响我指向的节点吗?即head.next现在为NULL?没有。这样想。head.next是一个保存值(地址)的变量。当你这样做时structnode*temp=head.next现在temp也与head.next具有相同的值。稍后当您更改temp的值时,为什么head.next所持有的值要更改。这是当您复制变量的值(在这