我知道foo[bar]
等於*(foo + bar)
,但*foo[bar]
等於什麼,例如訪問*argv[2]
?我在理解這件事時有點困惑,我想也許像*(*(foo) + bar)
,但我不確定..指針指針(* argv [])的指針運算?
我很抱歉,如果這是一個簡單的答案。
我知道foo[bar]
等於*(foo + bar)
,但*foo[bar]
等於什麼,例如訪問*argv[2]
?我在理解這件事時有點困惑,我想也許像*(*(foo) + bar)
,但我不確定..指針指針(* argv [])的指針運算?
我很抱歉,如果這是一個簡單的答案。
這是我的理解,這是**(foo + bar)
爲什麼?
*foo[bar]
分解爲*和foo[bar]
,因爲*是在foo[bar]
取消引用後完成的。
您已經回答了什麼foo[bar] == *(foo + bar)
現在添加一個*,你已經有了*(*(foo + bar))
這也簡化到**(foo + bar)
*a[b]
由於C和C++優先規則,相當於*(a[b])
。所以 *a[b]
相當於**(a+b)
啊!這很容易理解。我知道這很簡單,只需要等待11分鐘就可以接受:P – John 2010-11-25 17:33:04
如果下面是等價的,
foo[bar]
*(foo + bar)
然後下面是等效太:
*foo[bar]
**(foo + bar)
謝謝詹姆斯。 – John 2010-11-25 17:34:27
*foo[bar]
是指針引用到foo[bar]
。
假設char *argv[]
聲明,argv[2]
指argv
陣列,這是一種char *
,和*argv[2]
解引用該指針,給你在該字符串的第一個字符的第三個元素。
你可以簡單地嘗試一下。如有疑問,請使用括號。 – codymanix 2010-11-25 17:32:26