[英]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.