C - 使用指向指针的指针有功能参数

时间:2016-11-20 22:11:03

标签: c function pointers

我正在学习并试图正确理解与C合作的这一部分。

我正在做练习,必须编写一个返回图像的函数,但是有一个指向指针的指针,如果出现错误,必须存储一个值。

仅供参考:该功能存储在主文件包含的模块中。

这是我的代码的签名声明:

Img imageFromFile(const char * filename, char ** messageErreur) {

if (error) 
messageErreur = 1; //Trying to pass 1 has error code out of the function

}

我在编译时继续收到此消息:

img.c:148:23: attention : assignment makes pointer from integer without a cast
     messageErreur = 1; //Trying to pass 1 has error code out of the function

我不知道我要注意什么,以确保我需要在主文件中声明要传递此功能。

它是指向指针的指针,所以我想我需要创建一个char []类型的指针?

传递地址"&指针"在调用函数时?

2 个答案:

答案 0 :(得分:2)

调用者正在提供指向char指针的指针,换句话说,您已被授予将char *返回给调用者的能力。为此,首先取消引用char **,然后分配要返回的char *:

*messageErreur = "some string";
*messageErreur = someRuntimeAllocatedStringBuffer;

请务必小心,如果调用者被指定为"某些错误字符串"他们不能修改它(通常也不会修改它)。

答案 1 :(得分:1)

messageErrueur是一个指向char指针的指针。该char指针将指向一个字符串,这可能是错误消息。因此,假设在函数外部声明了错误消息:

char * error = "error message"

在您指定messageErrueur的imgFromFile中,您可以messageErrueur指向error,如下所示:

messageErrueur = &error;

&符号(&)将char * error的地址提供给messageErrueur,现在messageErrueur正在查看error处存储的字符。< / p>

如果我对这个问题有任何误解,请纠正我。希望这有帮助!