【问题标题】:Double pointer to function [duplicate]指向函数的双指针[重复]
【发布时间】:2015-07-01 21:38:43
【问题描述】:

我需要创建这个函数:

void lpLoadFileFunc(int (*loadFile)(char *filename, FILE **file))

为此,我必须首先创建这个函数:

int loadFile (char *filename, FILE **file))

这个函数应该上传一个文件,如果加载成功则返回。

但我不明白为什么要使用双指针。

你能帮忙吗?

【问题讨论】:

  • 取决于函数应该完成什么。
  • 所以你的意思是“为什么使用 FILE**”?
  • 当然loadFile() 正在分配*file
  • 也许对于给定的文件名,搜索可能会产生多个文件? FILE **file 将允许您检索指针数组,每个指针指向不同的文件。
  • 或 loadFile 函数正在“返回”打开文件的 FILE * 指针。我们需要看看loadFile的来源

标签: c file pointers double-pointer


【解决方案1】:

C 是按值传递。当您将变量传递给函数时,它会被复制,并且该副本的更改不会更改原始变量。但是,您可以传递变量的地址,该函数将获得指向该变量的指针,这使您能够更改它。不要忘记指针仍然是变量,如果要更改指针,则需要双指针。

void Test( int value , int* pointer )
{
    value = 1 ;
    *pointer = 1 ;
}

int one = 0 ;
int two = 0 ;

Test( one , &two ) ;

printf( "%d %d\n" , one , two ) ;

如您所见,one 没有改变。

【讨论】:

    猜你喜欢
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多