一、首先複習一下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必定要有所指向,如果直接定義就是錯誤的
//charp的p指向的是該區域的首位址,例如以下;
//只有字串陣列才可以進行整體的輸入與輸出,其他的不可以。
char 和char 的區別
1 char是乙個陣列定義,char 是指標定義 也稱char為靜態陣列,char 為動態陣列 2 指標和陣列的區別 1 指標和陣列的分配 陣列是開闢一塊連續的記憶體空間,陣列本身的識別符號 也就是通常所說的陣列名 代表整個陣列,可以使用sizeof來獲得陣列所佔據記憶體空間的大小 注意,不是陣列元...
char 和char 的區別
char c abc c 0 t char c1 def c1 0 t err 首先c1是乙個指標,它只是指向 def 這個記憶體塊。而 abc 是乙個常量區,不可以對其進行更改。而c定義的是乙個陣列,在分配記憶體時,會自動給它分配四個位元組的位址,並且會進行乙份拷貝工作,此時分配是在棧區進行的,是...
char 和char 的區別
之前在用到char 和char,用到srtncat,讓char對char 進行新增時執行會崩潰,之後做了一些分析和練習,對char 和char有了更深的理解。下面附上一些測試資料。include include include using namespace std int main cout do...