char *和char[]的簡單解析

一、首先複習一下C++的四個區;

1、棧區(stack)— 在需要的時候由計算機自動分配,不需要的時候自動回收 的區域,主要存放函數的參數值,局部變量的值。
2、堆區(heap) — 一般由程序員分配(new,molloc)釋放(delete,free), 若程序員不釋放,程序結束時可能由OS回收 。注意它與數據結構中的堆是兩回事,分配方式倒是類似於鏈表。
3、全局區(static)—全局變量和靜態變量被分配到同一塊內存中,在以前的C語言中,全局變量又分爲初始化的和未初始化的,在C++裏面沒有這個區分了,他們共同佔用同一塊內存區。
4、常量存儲區—字符串常量以及其他常量也是保存在此處,裏面存放的東西是不允許修改的。
5、程序代碼區—顧名思義就是儲存代碼的。

二、他們的區別
1、 從其聲明的對象來說:
char p[] = “hello world!”;這裏的p是一個數組,數組大小爲12字節。
char *p = “hello world!”;這裏的p是一個指針,指向“hello world!”字符串起始位置。
2、 從存儲位置來說:
char p[] = “hello world!”;p數組作爲局部變量被存儲在棧區;
char *p = “hello world!”;在這個聲明中,"hello world!"被存儲在常量區,而且是全局的,p僅僅就是個指針,指向這個區域的首地址
三、列舉一些我遇到的小知識dian。
//char p中的p必定要有所指向,如果直接定義就是錯誤的
//char
p的p指向的是該區域的首地址,例如以下;
裏插入圖片描述](https://img-blog.csdnimg.cn/20200107230600627.png?x-o在這裏插入圖片描述
//只有字符串數組纔可以進行整體的輸入與輸出,其他的不可以。

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