(*var)[n] 在 C++ 中是啥意思
Posted
技术标签:
【中文标题】(*var)[n] 在 C++ 中是啥意思【英文标题】:(*var)[n] what does it mean in c++(*var)[n] 在 C++ 中是什么意思 【发布时间】:2015-05-26 11:53:17 【问题描述】:(*var)[n] 在 C++ 中是什么意思?在这段代码中,我知道它指的是从组 n 的正则表达式匹配中获取捕获的字符串,但我不明白为什么这不起作用:
*var[n] //edit: oh duh, that would be a multiplication
括号是怎么回事?让我想起了铸造,所有 3 个都给出了相同的结果:
(char*)filename[0]
const_cast<char*>(filename.c_str())
&filename[0]
但是 (char*) 和 (*it) 在不同的地方有星号。
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;
【问题讨论】:
*
用于通过指针变量进行间接寻址。
*var[n]
与 (*var)[n]
不同。下标具有更高的优先级,因此相当于*(var[n])
。
(char*)
是类型转换。
我投票结束这个问题,因为它没有建设性!
【参考方案1】:
(*var)
表示var
是一个指针变量,它会通过指针间接访问它所指向的对象。添加[n]
意味着它指向一个数组,然后这将访问数组的n
th元素。
不要将(*var)[n]
与*var[n]
混淆。后者等价于*(var[n])
。这意味着var
是一个指针数组。它获取数组的n
th 元素,然后访问它指向的对象。
(type*)
是 C 风格的类型转换,它将这之后的值转换为指定的指针类型。
【讨论】:
以上是关于(*var)[n] 在 C++ 中是啥意思的主要内容,如果未能解决你的问题,请参考以下文章