簡體   English   中英

2D數組指針-訪問元素和地址

[英]2d array pointers - accessing elements and address

我正在學習2d數組指針,這是我的代碼。 我不知道為什么這行:

cout<<"Address of 1st part = "<<*ptr`  

此行顯示我地址時未顯示地址:

cout<<"Address of 1st part = "<<*(A)`  

這兩條線意味着任何人都可以幫助我。

#include <iostream>
using namespace std;


int main()
{
    int A[2][3]={{1,2,4},{5,8,3}};

    int *ptr;
    ptr=&A[0][0];

    cout<<"Address 1st part = "<<A<<endl;
    cout<<"Address 2nd part = "<<A+1<<endl;

    cout<<"Address 1st part = "<<ptr<<endl;
    cout<<"Address 2nd part = "<<ptr+1<<endl;

    cout<<"Address of 1st part = "<<*(A)<<endl;
    cout<<"Address of 1st part = "<<*ptr<<endl;

    cout<<"Address"<<*(A+1)+1<<endl;

    cout<<*(A+1)+2<<endl;

    return 0;
}

產量

Address 1st part = 0x7fffb6c5f660 
Address 2nd part = 0x7fffb6c5f66c 
Address 1st part = 0x7fffb6c5f660 
Address 2nd part = 0x7fffb6c5f664 
Address of 1st part = 0x7fffb6c5f660 
Address of 1st part = 1 
Address0x7fffb6c5f670 
0x7fffb6c5f674

這兩行實際上並不意味着相同。 多維數組不等同於指向其原始類型的指針。

A的類型為int [2][3] ,等效於int *[3] *A的類型是int[3] ,而不是int 連續指向的元素之間的步長sizeof *A等於sizeof(int)*3

ptr的類型為int * *ptr的類型為int 此處的步驟sizeof *ptr等於sizeof(int)

暫無
暫無

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

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