C/C++的指針與數組

今天被指針與數組的區別搞暈了。初學者的羈絆。

網上查找了一下,下面總結下

char *p="abcd";// 
上面這種定義法,實質上爲const char *p="abcd";

就是“abcd”的空間在編譯期,已經分配了空間,所以其值是不允許改變的,改變時,編譯不報錯,但運行時報錯。但指針p還是可以指向其他地方。


char arr[]="abcd";
這種定義法,可以認爲是char const arr="abcd",“abcd”的空間是運行時才分配的,所以“abcd”的值是可以改變的。而arr是可讀而不可寫的。


作爲函數參數傳遞時,

數組在作爲函數參數時,數組名將蛻化爲指針。C語言的書上是這麼說的,我這裏要說得是:這句話是不完全正確的!我們知道指針是佔用內存的,但是這個蛻化而成的傢伙是不佔有內存的,仍然只是個標籤。書上爲什麼這麼說呢?書上的意思是說這傢伙已經蛻化得不知道自己有幾個元素了。

同樣,也要遵從上面的定義規則。


補充一下:

*c++ :先*c 再c++
(*c)++ :先(*c) 再(*c)自增
*++c :先++c 再*(c)


char (*p)[5] 數組指針

char *p[5] 指針數組


參考:http://www.cppblog.com/geforcex/articles/1861.html

http://blog.sina.com.cn/s/blog_5e8a99570100ceqv.html



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