How to pass a pointer variable as a reference parameter?
关于这个问题,我还有一个问题。
问题的回ç”者使用int&*
作为å‚æ•°æ•°æ®ç±»åž‹ï¼Œä½†æ˜¯æˆ‘ä¸ç†è§£æŒ‡é’ˆå’Œå¼•ç”¨æ•°æ®ç±»åž‹çš„顺åºã€‚
我认为int*& a
在我看æ¥æ›´å®žç”¨ï¼Œå› æ¤æˆ‘å°è¯•ä½¿ç”¨å®ƒè¿›è¡Œç¼–译,但ä¸å…è®¸è¿™æ ·åšã€‚
我想清楚地了解这ç§é€»è¾‘。
我认为int*(int& a)
å°±åƒint&*
,所以它就åƒæ˜¯å¼•ç”¨çš„指针,但是显然,æ°æ°ç›¸å。
为什么ä¸èƒ½ä½¿ç”¨def l1_prime():
return [(i, 1) for i in mb]
作为指针引用的å«ä¹‰ï¼Ÿ
ç”案 0 :(得分:2)
C ++类型以å称为ä¸å¿ƒã€‚ int*&foo
是您应该如何看待它。
首先,我们有&foo
-foo
是å‚考。å‚考什么? *&foo
-指针。指å‘什么的指针? int*&foo
一个整数。
原始的C类型规则甚至旨在“演示它们的使用方å¼â€ã€‚å› æ¤ï¼Œint *foo
是int = *foo
是有效表达å¼çš„简写形å¼ï¼Œæˆ–者*foo
是int
的缩写。 &
并éžå®Œå…¨å¦‚æ¤ã€‚
ç”案 1 :(得分:2)
 Âè¦éµå¾ªä¸‰ä¸ªç®€å•æ¥éª¤ï¼š
   Â Â
- ä»ŽæœªçŸ¥å…ƒç´ å¼€å§‹ï¼Œæ²¿èžºæ—‹/顺时针方å‘移动;在é‡åˆ°ä»¥ä¸‹è¦ç´ 时,将其替æ¢ä¸º   相应的英è¯é™ˆè¿°ï¼š[X]或[]   =>数组X大å°ä¸º...或数组未定义大å°ä¸º...(类型1,类型2)   =>å‡½æ•°ä¼ é€’type1å’Œtype2返回...   *   =>指å‘...的指针
 Â- 继ç»æ²¿èžºæ—‹/顺时针方å‘执行æ¤æ“作,直到所有令牌都被覆盖。
 Â- 总是先解决括å·ä¸çš„任何内容ï¼
 Â
+---------+
| +-----+ |
| | +-+ | |
| | ^ | | |
int * & t ; | |
^ ^ ^ | | |
| | +---+ | |
| +-------+ |
+------------+
æ¥è‡ªt
的状æ€ï¼Œå› æ¤ï¼š
t是...
然åŽæˆ‘们看到;
ï¼Œå› æ¤ç»§ç»å‰è¿›å¹¶çœ‹åˆ°&
,所以
t是对...
的引用然åŽæˆ‘们看到*
t是对指å‘...
的指针的引用然åŽæˆ‘们看到int
:
t是指å‘int
这很åˆæƒ…ç†ã€‚现在让我们å°è¯•å¦ä¸€ä¸ªï¼š
+---------+
| +-----+ |
| | +-+ | |
| | ^ | | |
int & * t ; | |
^ ^ ^ | | |
| | +---+ | |
| +-------+ |
+------------+
æ¥è‡ªt
的状æ€ï¼Œå› æ¤ï¼š
t是...
然åŽæˆ‘们看到;
ï¼Œå› æ¤ç»§ç»å‰è¿›å¹¶çœ‹åˆ°*
,所以
t是指å‘...的指针
然åŽæˆ‘们看到&
t是指å‘...
的指针在这里,我们立å³é‡åˆ°é—®é¢˜ã€‚您没有指å‘引用的指针。引用没有地å€ã€‚
ç”案 2 :(得分:1)
考虑到符å·çš„å«ä¹‰ï¼Œint&*
并没有什么æ„义。
int
:一ç§æ•°æ®ç±»åž‹x *
:指å‘æ•°æ®ç±»åž‹x
的指针x &
:对数æ®ç±»åž‹x
我们å¯ä»¥å°†å®ƒä»¬ç»„åˆä¸ºä»¥ä¸‹å¸¸è§å½¢å¼ï¼š
int *
:指å‘int的指针int &
:对int的引用我会暂åœåœ°è¯´ï¼Œå¸Œæœ›æ‚¨çŸ¥é“the difference between passing by reference and by pointer。如果没有,请å‚è§é“¾æŽ¥ã€‚
但是,我们å¯ä»¥å°è¯•å¦ä¸€ç§ç»„åˆï¼š
int *&
:对指å‘int的指针的引用。我们å¯ä»¥åƒè¿™æ ·ä½¿ç”¨int *&
:
在呼å«è€…ä¸ï¼š
int * myInt= 0;
myfunction(myInt);
在myFunction(int *&myInt)ä¸ï¼š
int i;
myInt = &i;
呼å«è€…ä¸çš„myInt int将是i的地å€
 Â注æ„:将myInt设置为局部å˜é‡çš„地å€ä¸æ˜¯ä¸€ä¸ªå¥½ä¸»æ„ï¼Œå› ä¸º
myFunction()
结æŸæ—¶ï¼Œå˜å‚¨åœ¨å…¶ä¸çš„æ•°æ®å°†è¢«ç ´å。这åªæ˜¯å‡ºäºŽç¤ºä¾‹ç›®çš„
最åŽï¼Œè¿™é‡Œæœ‰ä¸€ä¸ªé—®é¢˜ï¼šint&*
int &*
:指å‘int引用的指针现在,我å‘您æ出一个问题:如果我们引用了一个int,为什么我们需è¦ä¸€ä¸ªæŒ‡é’ˆï¼Ÿç”:我们没有。没é“ç†ã€‚
å› æ¤ï¼Œç®€è€Œè¨€ä¹‹ï¼šint*&
å’Œint&*
是两回事。如果将其分解,第一个是有æ„义的,第二个则没有。