问题标签 [pointers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
28 回答
84274 浏览

理解指针的障碍是什么,可以做些什么来克服它们?

为什么指针对于许多 C 或 C++ 的新的甚至是老的大学生来说是一个如此混乱的主要因素?是否有任何工具或思维过程可以帮助您了解指针如何在变量、函数和其他级别上工作?

有哪些好的实践可以让某人达到“啊哈,我明白了”的水平,而不会让他们陷入整体概念中?基本上,像场景一样钻取。

0 投票
9 回答
702625 浏览

如何在 C 中将函数作为参数传递?

我想创建一个函数,在一组数据上执行由参数传递的函数。如何在 C 中将函数作为参数传递?

0 投票
9 回答
14877 浏览

在 C 函数指针中传递更多参数

假设我正在创建一个国际象棋程序。我有一个功能

这将在每次有效移动时调用函数指针操作。这一切都很好,但是如果我需要向动作函数传递更多参数怎么办?例如:

重新定义函数指针并不是最优解。foreachMove 函数用途广泛,代码中的许多不同位置都引用了它。这些引用中的每一个都必须更新它们的函数以包含它们不需要的参数是没有意义的。

如何将额外的参数传递给我通过指针调用的函数?

0 投票
5 回答
3597 浏览

如何根据它们指向的值对双指针数组进行排序?

我正在尝试在 C/C++ 中构建一个函数来对数组进行排序并将每个值替换为其“分数”或排名。它接收一个指向整数数组的双指针数组,并根据取消引用的整数值对双指针进行排序。我已经尝试了很多次让它工作,但无法让它下来。再一次,它必须根据它们指向的值对双指针进行排序。这就是我所拥有的:

0 投票
2 回答
6008 浏览

指向指针托管 C++ 的指针

我有一个旧的 C 库,其函数采用 void**:

我正在尝试从托管 C++ 调用此函数(m_pStuff 是 void* 类型的父 ref 类的成员):

这给了我来自 Visual Studio 的以下错误:

错误 C2440:“static_cast”:无法从“cli::interior_ptr”转换为“void **”

我猜编译器正在将 void* 成员指针转换为我背后的 cli::interior_ptr。

关于如何做到这一点的任何建议?

0 投票
8 回答
6229 浏览

C++ 内存管理

我在大学里了解到,你总是必须释放你未使用的对象,而不是你实际上是如何做的。例如,正确地构建您的代码等等。是否有关于如何在 C++ 中处理指针的一般规则?

我目前不允许使用 boost。我必须坚持使用纯 C++,因为我使用的框架禁止使用任何泛型。

0 投票
8 回答
806112 浏览

常规演员与 static_cast 与 dynamic_cast

我已经编写 C 和 C++ 代码将近 20 年了,但是这些语言的某一方面我从未真正理解过。我显然使用过常规演员,即

到处都是,但似乎还有另外两种类型的演员表,我不知道有什么区别。以下代码行之间有什么区别?

0 投票
4 回答
4029 浏览

将函数指针返回到 C 中的嵌套函数

正如标题已经说明的那样,我试图声明一个嵌套函数并返回一个指向该函数的指针。我希望这个函数“不”返回一个新的函数指针,它将返回对原始函数的否定。

这是我所拥有的:

someType 定义为:

0 投票
7 回答
30620 浏览

C ++删除指向指针的指针

所以我有一个指向指针数组的指针。如果我像这样删除它:

这也会删除所有指向的指针吗?如果没有,我是否必须遍历所有指针并删除它们,或者有更简单的方法吗?我的 google-fu 似乎没有给我这个问题的任何好的答案。

(是的,我知道我需要使用向量。这是学校里那些“赶上 C++”类型的作业之一。)

0 投票
4 回答
2707 浏览

不安全的 C# 和用于 2D 渲染的指针,好还是坏?

我正在编写一个包装 DirectX 9 并提供简化接口来执行 2D 像素级绘图的 C# 控件。.NET 要求我将此代码包装在一个不安全的代码块中,并使用允许不安全代码选项进行编译。

我锁定了整个表面,然后返回一个指向锁定的内存区域的指针。然后我可以使用“简单”指针算法直接写入像素数据。我对此进行了性能测试,发现与我所知道的其他“安全”方法相比,速度有了很大提高。

这是在 C# .NET 应用程序中操作单个像素的最快方法吗?有没有更好、更安全的方法?如果有一种同样快速的方法不需要指针操作,那么我更喜欢使用它。

(我知道这是 2008 年,我们都应该使用 DirectX 3D、OpenGL等,但是这个控件专门用于 2D 像素渲染,根本不需要 3D 渲染。)