2014-01-26 81 views
0

我正在學習2d數組指針,這裏是我的代碼。我DONOT知道爲什麼這條線:二維數組指針 - 訪問元素和地址

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 
+0

請將其縮小並向我們顯示輸出。第1部分 –

+0

地址第1部分= 0x7fffb6c5f660 地址第二部分= 0x7fffb6c5f66c 地址第1部分= 0x7fffb6c5f660 地址第二部分= 0x7fffb6c5f664 第1部分地址= 0x7fffb6c5f660 地址= 1 Address0x7fffb6c5f670 0x7fffb6c5f674 – user3215228

+0

沒有評論,編輯問題並正確地格式化。 –

回答

1

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

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

ptr的類型爲int **ptr的類型是int。此處的步驟sizeof *ptr等於sizeof(int)

+0

請只糾正我的代碼行..我只想了解2d數組的聲明指針變量。我明白你的觀點,請進一步解釋。 – user3215228

+0

你可以寫'int(* ptr)[3]',但我不完全確定你想要做什麼。 –