簡體   English   中英

通過指針訪問數組元素

[英]accessing array elements throug pointers

我正在制作一個繪圖程序,我在一個類中創建一個數組數組,我想將該數組傳遞給另一個類並循環遍歷它的元素我不明白主要類的問題:

     CFigure* FigureList[Figcount];
     CFigure* getfiglist()
     {
      return *FigureList;
      }`

另一類包括:

   CFigure *P=pManager->Getfiglist();
   for(int i=0;i<pManager->Getfigcount;i++)
    {
    *(p+i)->resize(factor); //displays error : operand of * must be a pointer
     }

我應該如何使用傳遞的指針訪問數組元素,我在這里做了什么導致錯誤。 提前致謝

關於C ++中的數組有很多話要說,這里有一些可能有用的信息:

本機C ++數組

如果您創建一個這樣的數組:

int array[10] = {0,1,2,3,4,5,6,7,8,9};

並且您嘗試打印array&array&array[0]的值,您會注意到它們都是相同的值。 此值是數組中第一個元素的地址。 沒有數組指針這樣的東西,只有指向第一個元素的指針。

由於數組的其他元素遵循第一個元素,您可以通過向第一個元素的地址( array+1 )添加1來訪問它們:

void print(int *array, int length)
{
    for (int i=0 ; i<length ; i++){
        cout << *(array+i) << endl;
    }
}

int main()
{
    int array[10] = {0,1,2,3,4,5,6,7,8,9};
    print(array, 10);
}

事實證明,您還可以使用正則表達式來訪問您的數組元素,它將正常工作:

void print(int *array, int length)
{
    for (int i=0 ; i<length ; i++){
        cout << array[i] << endl;
    }
}

矢量

話雖這么說,如果一個人不小心使用原生數組,代碼可能會很快變得非常討厭並且難以閱讀......這就是為什么你應該使用std::vector而不是@Ðan指出的。

向量具有動態特性,因此您在創建它時不必指定任何大小,並且可以根據需要添加任意數量的元素,而無需關心任何指針或內存。

void print(vector<int> &v)
{
    for (int i=0 ; i<v.size() ; i++){
        cout << v[i] << endl;
    }
}

int main()
{
    vector<int> v = {0,1,2,3,4,5,6,7,8,9};
    v.push_back(10);
    v.push_back(11);
    v.push_back(12);

    print(v);
}

鏈接

你可以在這里閱讀更多關於載體

我沒有談論它,但也有std :: array

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM