簡體   English   中英

數組指針 c++

[英]Array pointer c++

你好,我想知道它是怎么做的。 我有這樣的代碼:

int tab[] = {1,2,3};
int* p;
p = tab; 

cout <<p<<endl; //  cout adress here 
cout <<p[0]<<endl; //  cout first element of the array 

p是如何存儲第一個元素的地址但p[0]已經存儲了第一個元素? 它像p[0] = *p一樣工作? p[1]p[1] = *(p+1)一樣工作? 我知道如何使用它,但我有點困惑,因為我不太明白

p 是如何存儲第一個元素的地址的

p是一個指針。 指針存儲地址。

但是 p[0] 已經存儲了第一個元素?

p[0]是數組的一個元素。 它存儲一個 integer。

程序可以同時存儲這兩者。

它的工作方式類似於 p[0] = *p? p[1] 的工作方式類似於 p[1] = *(p+1)?

正確的。 這就是下標運算符在指針和 integer 上的工作方式。

p是如何存儲第一個元素的地址的

數據類型int tab[]int*相同, p的類型也是如此。 所以這兩個變量都指向相同的 memory 位置,這將是數組的開始。

但是p[0]已經存儲了第一個元素?

變量tab包含指向tab[0]的第一個元素的指針,因此將相同的值分配給另一個變量將具有等效的效果。

它的工作方式類似於p[0] = *p? p[1]p[1] = *(p+1)一樣工作?

是的, *(p+i)p[i]相同。

如果您需要詳細說明,請查看此鏈接

指針 p 指向數組的第一個變量,並且由於數組具有 memory 的連續分配,所以在 *(p+1) 上它開始指向數組的第二個變量。 你可以通過進一步的例子來理解這一點。

#include <iostream> 
using namespace std; 
int main() 
{ 
    // Pointer to an integer 
    int *p;  
      
    // Pointer to an array of 5 integers 
    int (*ptr)[5];  
    int arr[5]; 
      
    // Points to 0th element of the arr. 
    p = arr; 
      
    // Points to the whole array arr. 
    ptr = &arr;  
      
    cout << "p =" << p <<", ptr = "<< ptr<< endl; 
    p++;  
    ptr++; 
    cout << "p =" << p <<", ptr = "<< ptr<< endl; 
      
    return 0; 
} 

暫無
暫無

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

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