11/12c++學習:指針的深入淺出(二)

  1.數組名錶示數組第一個元素的地址,下面的語句將p聲明爲指向wages數組第一個元素地址的指針

  double *p = wages; 

  wages = &wages[0] = address of the first element of the array

  2.指針變量加1時,其增加的值等於指向的類型佔用的字節數,如double類型指針加1,地址值將增加8,即8個字節的內存;再如short型,加1後地址值增加2。

  3.當一個指針指向數組時,如wages[1],c++編譯器會將它看做 *(wages + 1),這表示,編譯器優先計算(wages+1)這第二個元素的地址,再找到存儲在這個地址上的值,最終結果邊代表了wages[1]。因此我們可以發現,數組表示法中,在很多種情況下可以用相同的方式使用指針名和數組名。

如 arrayname[i] becomes *(arrayname + i)

pointername[i] becomes *(pointername + i)

但是其中存在着一種差別:指針的值可以被改變,但數組名是常量,因此出現了下列對比:

pointername = pointername + 1; //合法,指針加一,地址增加對應類型字節數。

arrayname = arrayname + 1; //不合法,數組名是常量,不能對常量值進行修改。

  4.字符型指針輸出爲字符串,若想輸出地址,需要使用強制轉換類型,轉換爲int,即使用(int *)p輸出字符串的地址。

  5.字符串與數組。將字符串賦值給數組不能單純使用複製操作符,需要使用strcpy()或strncpy()。

  6.new用於結構的兩步驟:創建結構和訪問結構成員。

eg: ①inflatable *ps = new inflatable; 

②訪問成員:若inflatable結構中含有price成員,則ps->price表示被指向的price成員。其中"->"爲箭頭成員操作符,由連字符和大於號組成。

Tips:什麼時候使用句點操作符呢?答:結構標識符爲結構名的時候,inflatable.price。

什麼時候使用箭頭成員操作符呢?答:標識符爲指向結構的指針時,ps->price。

另外,ps指向inflatable,則(*ps)表示結構本身,即(*ps)也是一個結構,可以使用(*ps).price來指向成員變量price。

  7.delete[]和delete。delete[]用於釋放new分配的對象數組指針所指向的內存,delete用於釋放new分配的單個對象指針所指向的內存。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章