如何在c#中使用指向指针的指针?

时间:2013-06-24 15:18:17

标签: c# pointers ffmpeg

我在Visual Studio 2012中使用C#来调用包含在我的项目所需的一组外部库中的函数。该函数需要传入一个双指针,但我不确定确切的语法。单指针对我很有用。我使用的是unsafe关键字。

AVFormatContext _file = new AVFormatContext();

fixed (AVFormatContext* p_file = &_file)
{
   avformat_alloc_output_context2(&p_file,null,null,filename);
}

VS正在抱怨“& p_file”语法,错误为“无法获取只读局部变量的地址”。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:6)

您不能使用p_file的地址,因为p_file在固定块内是只读的。如果您可以获取其地址,那么这将是可能的:

fixed (AVFormatContext* p_file = &_file)
{
   AVFormatContext** ppf = &p_file;
   *ppf = null; // Just changed the contents of a read-only variable!

因此,您必须获取可以更改的内容的地址:

fixed (AVFormatContext* p_file = &_file)
{
   AVFormatContext* pf = p_file;
   AVFormatContext** ppf = &pf;

现在我们都很好;更改*ppf不会更改p_file