我试图在函数中传递单指针和双指针。但是它给了我错误。
int main()
{
int *pt;
fun(pt);
.
.
}
fun(int *pt)
{
pt=(int*)malloc(6*sizeof(int));
.
.
}
以及使用双指针时的语法。任何人都可以用一个例子来描述它,或者可以编辑上面的例子。我将非常感谢你。
引用语义的基本思想是函数修改存在于函数自身作用域之外的其他对象。在C语言中,你可以通过将被引用对象的地址传递给一个接受"指向对象类型的指针"类型参数的函数来实现引用语义。
"通过指针的引用语义"的关键标志由这两点组成:
- 调用者获取某物的地址(通过
&
-操作符)。 - 被调用方取消对参数的引用。
打电话者:
T x;
f(&x); // address-of
被:
void f(T * p) // take argument as pointer
{
(*p).y = 20; // dereference (via *)
p->x = 10; // dereference (via ->)
}
在你的情况下,T = int *
:
int * pt;
fun(&pt); // function call takes address
void fun(int ** p) // function takes pointer-to-object...
{
*p = malloc(173); // ...and dereferences to access pointee
}