![]() |
1
6
至少在C语言中,双指针通常用于二维数组。最常见的二维数组可能是C字符串数组(
根据名字
|
![]() |
2
4
在您引用的代码中可能不是这样,但是在任何时候您想要传递一个指向函数的指针并且对该指针所做的更改反映在该函数的作用域之外时,都需要一个双指针。 例如,如果您试图重写strcpy函数,以便用户不必为源字符串分配内存,则可以尝试如下操作:
如果你当时调用这个函数,
您的输出如下: 来源:foo 夏令时:foo foo:foo 新的: 在尝试打印newptr时,也可能会出现SEG错误,这取决于您的系统。这种行为的原因与您不希望更改通过值传递给函数的int的原因完全相同:传递给mystrcpy的只是newptr引用的内存地址。当您在函数内为dst分配空间时,您将把地址dst指向更改为。此更改不会反映在mystrcpy范围之外! 相反,如果希望newptr指向新分配的内存块,则需要让dst指向指针char**。
现在,如果要调用该函数:
您将获得预期的输出: 来源:foo 夏令时:foo foo:foo 新:foo 希望有帮助! |
![]() |
3
3
|
![]() |
4
2
在最一般的情况下,双指针是指向指针列表的指针。 |
![]() |
Community wiki · C中有哪些耗时的操作? 1 年前 |
![]() |
Community wiki · 将所有处理器电源都投入到任务中 1 年前 |
![]() |
Community wiki · C++为C添加了什么?[已关闭] 1 年前 |
![]() |
Community wiki · 打印1到1000,不带循环或条件 1 年前 |