main()
{
int *a;
myfunc(a);
}
myfunc(int & *b)
{
//'b' is a pointer with the same address as 'a'
//so if you change what 'b' points to, it also changes what 'a' points to
}
以上操作无效。现在,这没什么大不了的,因为您可以使用双指针执行相同的操作,但是拥有引用指针似乎更简单。
main()
{
int *a;
myfunc(&a)
}
myfunc(int **b)
{
//de-referencing b once will give you the 'a' pointer
}
答案 0 :(得分:5)
可以有“引用指针”;您只是拼错了。最好从类型别名的角度来看它,因为它们会删除所有的 export class PopoverPage {
parentPage: any;
constructor(
public params: NavParams
) {
}
order() {
this.parentPage = this.params.get('ref');
this.parentPage.list();
}
}
语法。如果您有:
*
很明显这意味着什么。因此,更改using Type = int;
Type val = 5;
void func(Type &ref);
func(val);
意味着同一件事:
Type
using Type = int*;
Type val = /*get a valid pointer*/;
void func(Type &ref);
func(val);
是对传递给函数的指针对象的引用。
要更清楚地说明这一点,对ref
的引用是int*
。从右到左阅读:指向int *&
的指针的引用。
答案 1 :(得分:0)
拥有引用指针似乎更简单。
草率的 * 写作可能会导致混乱的理解。您不是在谈论“引用指针”,而是“引用到指针”。对于将“参考”置于与“指针”同等的地位,“至”很重要。 “参考”在这里应该是名词,而不是形容词。 “至”也很重要,因为“指针”也得到“至”。在您的示例中,指针是int
的指针。放在一起:您正在寻找指向 的指针 int
的引用。此完整描述是关键。一旦我们在描述中加上了“ int
一词,其余的自然流淌。
* 在这种情况下,对“草率”的任何负面含义都应该忽略。粗俗的措辞很普遍,并且在会话英语中被接受。但是,编程具有更高的精度标准。
您证明了自己知道如何声明a
是指向int
的指针。声明以int
开头,继续到表示“指向”的符号,然后以a
结尾:
int * a;
^ ^ ^
an int a pointer to a is
该声明是对“ a
的反向读取,它是指向int
” 的指针。相同的策略适用于大多数声明,尤其是所需的事物:“ b
是对指向int的指针的引用” 。反读:
int * & b;
^ ^ ^ ^
an int a pointer to a reference to B is
您不能有指向int
的引用的指针,但是您当然可以有指向int
的指针的引用。