239得票10回答
C中void指针的指针算术

当指向特定类型(例如 int, char, float, ..) 的指针被递增时,它的值将增加该数据类型的大小。如果一个指向大小为 x 的数据的 void 指针被递增,它如何到达指向 x 字节之后的位置?编译器如何知道要将 x 添加到指针的值中?

202得票13回答
C不难: void ( *( *f[] ) () ) ()

我今天看到了一张图片,希望能得到解释。以下是该图片: 翻译:"C并不难:void (*(*f[])())()定义 f 为一个未指定大小的函数指针数组,它返回指向返回 void 的函数指针的指针。 我感到困惑,想知道这样的代码是否实用。我在谷歌上搜索了这张图片,并在Reddit上找到另一张图片...

172得票7回答
138得票16回答
C编程中空指针的概念

在C语言中,是否可以不使用类型转换对void指针进行解引用? 此外,是否有一种通用的函数可以接收一个指针并将其存储在void指针中,并通过使用该void指针,我们可以实现通用函数的功能? 例如:void abc(void *a, int b) { if(b==1) pri...

115得票4回答
C++中的空指针是什么?

可能是重复问题: 什么是 void 指针和空指针? 我经常看到类似以下代码: void * foo(int bar); 这是什么意思?它是否意味着可以返回 任何东西?这与 C# 中的 dynamic 或 object 相似吗?

103得票13回答
删除void指针是安全的吗?

假设我有以下代码:void* my_alloc (size_t size) { return new char [size]; } void my_free (void* ptr) { delete [] ptr; } 这样安全吗?或者在删除之前必须将ptr转换为char*吗?

79得票17回答
错误: 从 'void*' 到 'int' 的强制类型转换丢失精度。

我有一个原型为void* myFcn(void* arg)的函数,该函数被用作pthread的起点。 我需要将参数转换为int类型以供后续使用:int x = (int)arg; 编译器(GCC版本4.2.4)返回以下错误:file.cpp:233: error: cast from 'voi...

56得票5回答
“typedef void (*Something)()”的意思是什么?

我试图理解这是什么意思,我正在查看的代码中有 在.h中。typedef void (*MCB)(); static MCB m_process; 在.C中MCB Modes::m_process = NULL; 有时候当我这样做的时候m_process(); 我遇到了段错误,可能是因为...

56得票10回答
在C++中,所有指针的大小都相同吗?

最近,我遇到了以下statement: 所有指针的大小通常都相同,但是指针类型的大小在技术上可能会不同。 但是我又看到了this,其中提到: 指针的大小都相同,因为它们只存储内存地址,我们必须知道它们所指向的东西是什么。 现在,我不确定哪个陈述是正确的。第二个引用陈述似乎来自佛...

53得票10回答
为什么不可能有指向 void 的引用?

为什么无法有一个指向void的引用?C++标准中唯一描述此情况的内容是在8.3.2.1节中的这句话: 指定类型为"cv void引用"的声明符是非法的。 为什么会这样?为什么我不能写一个接受void&的"通用"函数? 需要澄清的是,我明白使用引用-void "原样"是毫无...