2015-05-26 76 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风格的类型转换,它将此后的值转换为指定的指针类型。