(*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]意味着它指向一个数组,然后这将访问数组的nth元素。

不要将(*var)[n]*var[n] 混淆。后者等价于*(var[n])。这意味着var 是一个指针数组。它获取数组的nth 元素,然后访问它指向的对象。

(type*) 是 C 风格的类型转换,它将这之后的值转换为指定的指针类型。

【讨论】:

以上是关于(*var)[n] 在 C++ 中是啥意思的主要内容,如果未能解决你的问题,请参考以下文章

[=](...)... 在 C++ 中是啥意思? [复制]

“||”是啥意思在 var 语句中是啥意思? [复制]

-> 在 C++ 中是啥意思? [复制]

[=] 在 C++ 中是啥意思?

“= 0”在 C++ 中是啥意思? [复制]

这个符号在 C++ 中是啥意思? [复制]