搜尋

首頁  >  問答  >  主體

java - c/c++ 指標指向 陣列與資料型態 判斷時會不會有二義性?

int dd=1;
int *a=ⅆ    // 1
int *c=new int[2];  //2

这里1说明a是int 类型的指针,2说明c是int数组类型的指针.对不?

这段数据结构代码

兩個理解:
1.rowlist是個動態數組指向一大塊內存,數組裏的元素存儲著指向LinkList<int>鏈表的地址。即rowlist是指針數組。如圖一

2.rowlist指向一個內存,這個內存存儲著<LinkList< int > * >類型的指針,即rowlist是指針的指針。如圖二

感覺兩個都可以,是要看具體實現嗎。比如rowlist=new ...是采用第一種?

天蓬老师天蓬老师2796 天前793

全部回覆(2)我來回復

  • 伊谢尔伦

    伊谢尔伦2017-04-18 10:55:58

    int dd=1;
    int *a=&dd;    // 1
    int *c=new int[2];  //2

    題主說:

    這裡1說明a是int 類型的指針,2說明c是int數組類型的指針.對不?

    並不是這樣的,a和c其實是同一個東西,他們是指向int的指標。 c並不是「int數組類型的指標」。

    為什麼c本來是一個int指針,但實際上它可以指向一個int數組呢?因為int數組賦值給int指標的時候,C語言偷偷把它(int數組)轉換成了該int數組的首元素,這個「偷偷轉換」的專業名詞叫做「隱式轉換」。

    所以總結一下:

    1. 變數c不是int數組類型的指針,而是int型別的指針;

    2. 那為什麼變數c竟然可以指向int數組呢,是因為其中發生了隱式轉換;

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-18 10:55:58

    int *c=new int[2];  //2

    c就是指向int的指標。指向陣列的指標應該寫成

    int (*c)[2]=new int[2];

    指針+1 會走幾個位元組呢?試一試。

    回覆
    0
  • 取消回覆