天天看點

指針數組以及數組指針

    首先用幾個表達式直覺的感受一下什麼是指針數組以及數組指針。

    一.表達式

  有了直覺的感受那麼我們具體分析,指針數組以及數組指針是怎麼定義的。

指針數組以及數組指針

<b>      1).指針數組:實質是數組,數組中存放的元素是指針。</b>

<b>      2).數組指針:實質是指針,指針變量中存放的是數組首元素的位址。</b>

<b>    二.分析小程式了解數組指針</b>

       1).編譯上述程式

指針數組以及數組指針

       (1).第一個警告告訴我們char (*)[4]和char (*)[5]的數組下标不同,隻需要将‘4’改成‘5’即可。

       (2).第二個警告告訴我們char (*)[5]與char *的間接級别不同。為什麼呢?原因為,字元數組char a[5]的類型的類型是char *,指針指向字元。而char (*p4)[5]的類型是char (*)[5],指針指向數組。

       (3).如果要輸出(p3+1)的位址呢?會是什麼呢?同樣我們用代碼來分析。

指針數組以及數組指針

    為了分析我将字元數組的位址也都輸出了。并且多輸出一塊空間以便于分析。我們不難發現(p3+1)的位址是向後整整偏移了一個字元數組的大小,那麼我們也就可以了解,數組指針的含義了。

    注意:字元數組後面也是有'\0'的!!!不單單是字元串。這一點我們可以用sizeof求數組大小,同時在使用memcpy記憶體拷貝函數的時候尤為重要。你們肯定會有疑問,記憶體拷貝函數是以(size_t count)作為拷貝條件,為什麼還要有拷入'\0'?原因很簡單,如果不将‘\0’拷入的話,結果還是字元串麼?能不能正确使用strlrn函數?是以,這就是為什麼要将‘\0’拷入的原因了。很重要!

    三.自測小程式

    輸出的是什麼?

以上就是本人在學習過程中的一些經驗總結。當然,本人能力有限,難免會有纰漏,希望大家可以指正。