指向std :: vector,指针声明的指针

时间:2017-12-07 08:19:53

标签: c++ c++11 pointers

这两个指针声明之间是否存在任何差异,将std :: vector传递给具有我不理解的特殊签名的函数?

<button onclick="getRandomInt(-5,5)">Try it</button>
<p id="demo"></p>

<script>
function getRandomInt(min, max) {
    document.getElementById("demo").innerHTML = Math.floor(Math.random() * (max - min + 1)) + min;
}
</script>

p_VecA和p_VecB之间有什么区别?

你能解释一下功能签名吗?我不明白最后一部分。

2 个答案:

答案 0 :(得分:3)

double * p_VecA[1];创建一个包含1个指针元素的数组,指向double(在本例中为double中的第一个theVectorA)。因此p_VecA是指向双精度的指针数组,在此上下文中,如果使用不带索引的名称,它会衰减到指向其第一个元素的指针(将其视为double**)和p_VecA[0]属于double*类型(如p_VecB是)。

double * p_VecB创建指向double的指针(在这种情况下,double中的第一个theVectorB)。

更新

也许这可以帮助您理解libraryFunction()的签名:

What is the difference between const int*, const int * const, and int const *?

像杰克写道:arrayOfChannels是一个指向双重

的const指针的指针

答案 1 :(得分:1)

p_vecA是一个大小为1的指针数组

double * p_VecA[1];

p_VecB是指针

double * p_VecB = theVectorB.data();

可以写成

double * p_VecB;
p_VecB = theVectorB.data();