我正在查看一些源代码,在代码中它有一些我不完全理解的代码。下面是一个模拟我无法理解的部分的基本伪示例:
float *myArray;
object(){
myArray = new float[20];
}
~object(){
}
void reset(){
delete [] myArray;
}
void myMethod(float *array){
for (int i = 0; i < 20; i++){
array[i] = 0.5f;
}
}
现在在另一个方法体中有:
void mySecondMethod(){
myMethod(myArray + 10);
}
这是我没有得到的第二种方法:将数组指针和int传递给需要数组指针的参数时,这意味着什么?我只是想加强我的知识,我一直试图搜索它,但没有找到任何信息。
答案 0 :(得分:7)
它只是表示“此数组中第11个元素的地址”。
这是指针算术的一个例子,它是C的核心特性(也是C ++的核心特征,虽然它可能被认为有点“低级”)。
表达式意味着“获取myArray
的第一个元素的地址,并将10个元素的大小添加到”。
它的作用与myArray[10]
相同,因为索引运算符实际上是*(myArray + 10)
的糖。
答案 1 :(得分:5)
myArray[10] == *(myArray + 10)
&myArray[10] == myArray + 10