1
5
你不能。你 必须 在取消引用指针之前,请先了解指针可以强制转换到的有效类型。
|
2
1
与Java不同,您在C/C++中使用内存指针。没有任何封装。这个
简而言之,你是在裸机工作。这些类型是编译器指令,不包含运行时信息。它也不会跟踪您动态创建的对象。它只是内存中的一个段,分配给您最终可以存储的位置 任何东西 . |
3
0
使用void*的主要原因是可能会指向不同的事物。因此,我可以传入int*或Node*或任何其他内容。但是除非你知道它的类型或长度,否则你什么都做不了。 但是如果你知道长度,你可以在不知道类型的情况下处理指向的内存。将其转换为字符*是因为它是一个单字节,所以如果我有一个空*和一些字节,我可以将内存复制到其他地方,或者将其归零。 此外,如果它是一个指向类的指针,但您不知道它是父类还是继承类,那么您可以假设它是父类还是继承类,并在数据中找到一个标志来告诉您是哪个。但不管怎样,当你想做的远远不止是把它传递给另一个函数时,你需要把它转换成某种东西。char*是最容易使用的单字节值。 |
4
0
你的困惑源于处理Java程序的习惯。Java代码是虚拟机的一组指令,其中RAM的功能被赋予一种数据库,该数据库存储每个对象的名称、类型、大小和数据。你们现在学习的编程语言应该被编译成CPU指令,其内存组织与底层操作系统相同。C和C++语言使用的现有模型是建立在大多数流行操作系统之上的抽象模型,代码在为该平台和操作系统编译后可以有效地工作。当然,除了C++中著名的RTTI之外,该组织不涉及关于类型的字符串数据。
事实上,C++库包含大量容器类模板,如果它们是由ISO标准定义的,那么这些模板是可用和可移植的。标准的3/4只是对通常称为STL的库的描述。使用它们比使用裸指针更好,除非您出于某种原因想要创建自己的容器。对于特定任务,仅提供C++17标准
|
5
0
你没有。
您可以做的是记录存储在
在里面
c
在这里,我们忘记了
它稍后传递给代码
在…内
这个
在C++中,您可以使用
假设您想要一个指向任何可打印内容的指针。如果可以的话,有些东西是可以打印的
我刚才做的是C++中一种叫做“类型擦除”的技术(与Java类型擦除有点类似)。
在这里,我们创建了一个特殊的“虚拟”界面,用于在一种类型上打印的概念。 该类型不需要支持任何实际的接口(没有二进制布局要求),它只需要支持某种语法。 我们为任意类型创建了自己的虚拟调度表系统。
这在C++标准库中使用。在里面
c++11
有
混合
|
Mushy · C++11自动和void*泛型 7 年前 |
Mushy · 另一个空洞的话题;我只是想问一下,因为我很困惑 7 年前 |
Migsi · static_cast之后有没有方法进行类型安全检查? 7 年前 |
Cloud · 带指向父结构指针的结构:最佳方法 8 年前 |
totoro · 在Python SWIG中包装void*参数 8 年前 |
mytosus · 尝试访问结构中的空指针时出现Segfault 8 年前 |
HighPredator · 使用size_t进行void指针模拟 9 年前 |