|
|
1
2
由于还没有人提到这一点,它们作为迭代器可能很有用。 假设您有某种类型的对象列表。你需要以特定的顺序遍历其中的一些。 因此,创建一个数组,其中包含指向需要遍历的对象的指针,然后对该数组进行排序。 该数组的迭代器是指向指针的指针。
把它分类
然后用
这就是我上次使用指针指向指针的上下文。(实际上我有最后一个抽象层,所以我最终得到了指向指向指针的指针,但这可能更不寻常) |
|
2
4
指向指针的指针通常用作分配和返回缓冲区的参数,如字符串:
同样,您可以传递对该缓冲区的引用,而不是传递指向要分配和修改的缓冲区指针的指针。这有助于向调用者澄清函数的语义,这样它们就不会执行类似调用的操作。
但即使是语义
请记住,虽然这些示例是简单的和人为的,但是像这样的实现却比比皆是。在许多这样做的情况下,您没有选择——例如,在调用类似这样的winapi函数时 FormatMessage() 并要求它分配缓冲区。但在编写函数的许多其他情况下,将有其他方法来剥除猫的皮。可以说,更好的方法。例如:
由于各种原因,这可能会更好。从语义上讲,按值返回值比使用指针指向指针之类的outvals更清楚,因为所有权问题很容易解决。通常最好避免在堆栈分配变量做得很好的地方使用new操作符,因为这样可以避免由于
|
|
|
3
2
指向指针的指针?动态分配的二维阵列! |
|
|
4
2
我几乎记不清上次我直接用过哪一个。大多数情况下,它们对于实现自己的容器类很有用——例如,如果要在链接列表中分配一个节点,则在节点之间有指针,如果要修改传递给函数的指针,则需要引用或指向该指针的指针。 当然,也可以使用指向指针的指针来创建伪二维数组。如果你真的需要一个正方形的数组,它们不是一个特别好的选择,但是如果你想要一个“不规则的数组”(例如一个字符串数组,每个字符串的长度可能不同),它是有用的。
指针在C中几乎是不可避免的,但是在C++中,标准库已经有容器类了。例如,如果你想在C中动态数组的动态数组,那么你的唯一选择就是从A开始。
|
|
|
5
1
传递代表TIFF文件内容的值数组以进行地理处理。 |
|
|
6
0
假设您想要返回一个已分配的缓冲区,或者您可能需要重新分配一个传入的缓冲区。 您可以返回一个指向缓冲区的指针,或者让调用者传入一个指针的地址(这样您就有了指向指针的指针),然后将该指针设置为指向缓冲区。 |
|
|
7
0
任何返回接口的方法都必须被赋予指向指针参数的指针才能返回。 |
|
|
8
0
我曾经在函数中使用char***arg参数来更新一个动态分配的argv-like数组,还把begebies从我的同事中吓跑。 |
|
|
9
0
好,
每当您希望被调用方更改指针(而不是指针指向的对象)时,对指针的引用都很有用。例如,动态提供内存的人:
|
|
|
10
0
指向指针的指针也适用于创建混合长度数组的数组。我想它们通常被称为
|
|
|
11
0
模板排序向量的排序函数。这是一个相当现实的例子:
考虑到我们可以将任何东西作为向量参数传递,使用常量引用作为排序函数参数是相当明智的。然而,什么是不健全的,是解决如何串血腥的星号,符号和
|
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 8 月前 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 9 月前 |
|
|
Bobby · 复合字面值总是左值吗? 9 月前 |
|
9-Pin · C: 嵌套结构的堆栈内存分配 9 月前 |