4

我正在查看一些源代码,并且在代码中它有一些我不完全理解的代码。下面是一个基本的伪示例,它模仿了我无法理解的部分:

    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 传递给需要数组指针的参数时,这意味着什么?我只是想加强我的知识,我一直在尝试搜索它,但没有找到任何信息。

4

2 回答 2

7

它只是表示“此数组中第 11 个元素的地址”。

这是指针算术的一个例子,它是 C 的核心特性(也是 C++ 的,尽管它可能被认为有点“低级”)。

该表达式的意思是“获取 的第一个元素的地址myArray,并在其中添加 10 个元素的大小”。

它的工作原理与 相同myArray[10],因为索引运算符实际上是*(myArray + 10).

于 2013-10-22T15:24:39.910 回答
5
myArray[10]  == *(myArray + 10)

&myArray[10] == myArray + 10
于 2013-10-22T15:24:40.087 回答