C/C++中數組和指針的區別

首先定義一個數組和一個指針:

char *aa = "abcde";
char bb[6] = "abcde";// 注意:char bb[5] = "abcde";是錯誤的!!

他們之間有什麼共同點和區別呢?

1、共同點

訪問數據的時候,可以這樣訪問:

char cTmp = aa[0];

char cTmp2 = bb[0];

此時,cTmp = cTmp2.

還可以這樣:

    char cTmp = *aa;
    char cTmp2 = *bb;

sizeof(*aa)=1;//取得aa的第一個成員

sizeof(*bb)=1;//取得bb的第一個成員

2、區別:

aa是一個指針,可以作爲左值,如:aa++; 等,是正確的!但是aa[0]='c'是錯誤的!

bb是一個數組,不能作爲左值,如:bb++; 等,是錯誤的!但是bb[0]='c'是正確的!

sizeof(aa)=4;//因爲aa是指針

sizeof(bb)=6;//等於數組的大小

sizeof(&aa)=4;//取得aa的地址

sizeof(&bb)=6;//取得bb的地址,等於數組的大小

由此可以看到,雖然aa和bb在某些時候是可以通用的,但是由於數據類型不一樣,還是存在很大的區別。

發佈了30 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章