双指针功能

时间:2015-04-23 15:26:36

标签: c file pointers double-pointer

我需要创建这个功能:

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

要做到这一点,我必须先创建这个功能:

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

此功能应上传文件并在加载成功时返回。

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

你能帮忙吗?

1 个答案:

答案 0 :(得分: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没有改变。