2015-05-26 108 views
-2

(* var)[n]在C++中的含義是什麼?在這段代碼中我知道,它是指從獲得n組的正則表達式匹配的捕獲字符串,但我不明白爲什麼這不起作用:(* var)[n]在C++中意味着什麼

*var[n] //edit: oh duh, that would be a multiplication 

什麼了括號?讓我想起了鑄造的,所有3給出了相同的結果:

(char*)filename[0] 
const_cast<char*>(filename.c_str()) 
&filename[0] 

但(字符*)和(*它)在不同的地方的星號。

regex expr("[_-]?([a-gA-G]#?(?:-2|-1|[0-8]))"); 
    int found = 0; 
    for (sregex_iterator it(tagstruct.name.begin(), tagstruct.name.end(), expr), itEnd; it != itEnd; ++it) { 
     if ((*it)[1] != "") { 
      notename = (*it)[1]; 
      if (++found >= search_count) { 
       f = NoteNameToFreq(notename); 
       break; 
      } 
     } 
    } 
+0

'*'用於通過指針變量進行間接尋址。 – Barmar

+1

'* var [n]'與'(* var)[n]'不一樣。下標具有更高的優先級,所以它相當於'*(var [n])'。 – Barmar

+0

'(char *)'是類型轉換。 – Barmar

回答

1

(*var)意味着var是一個指針變量,並且將通過間接指針訪問它指向的對象。添加[n]意味着它指向一個數組,然後這將訪問該數組的第th個元素。

請勿將(*var)[n]*var[n]混淆。後者相當於*(var[n])。這意味着var是一個指針數組。它獲得數組中的第個元素,然後訪問它指向的對象。

(type*)是C風格的類型轉換,它將此後的值轉換爲指定的指針類型。