字元型指標變數與字元陣列的區別

2021-06-15 08:45:13 字數 1118 閱讀 3156

(1)分配記憶體 

設有定義字元型指標變數與字元陣列的語句如下: 

char *pc ,str[100]; 

則系統將為字元陣列str分配100個位元組的記憶體單元,用於存放100個字元。而系統只為指標變數pc分配4個儲存單元,用於存放乙個記憶體單元的位址。

(2)初始化賦值含義 

字元陣列與字元指標變數的初始化賦值形式相同,但其含義不同。例如: 

char str[ ] ="i am a student ! " ,s[200]; 

char *pc="you are a student ! " ; 

對於字元陣列,是將字串放到為陣列分配的儲存空間去,而對於字元型指標變數,是先將字串存放到記憶體,然後將存放字串的記憶體起始位址送到指標變數pc中。

(3)賦值方式 

字元陣列只能對其元素逐個賦值,而不能將字串賦給字元陣列名。對於字元指標變數,字串位址可直接賦給字元指標變數。例如: 

str="i love china! "; //字元陣列名str不能直接賦值,該語句是錯誤的。 

pc="i love china! "; //指標變數pc可以直接賦字串位址,語句正確

(4)輸入方式 

可以將字串直接輸入字元陣列,而不能將字串直接輸入指標變數。但可將指標變數所指字串直接輸出。 

例如: cin >> str //正確 

cin >> pc //錯誤 

cout<

(5)值的改變 

在程式執行期間,字元陣列名表示的起始位址是不能改變的,而指標變數的值是可以改變的。

例如:str=str+5; //錯誤 

pc=str+5; //正確 

小結 字元陣列s[100] 指標變數pc

(1)分配記憶體 分配100個單元 分配4個單元。 

(2)賦值含義 字串放到陣列儲存空間 先將字串存放到記憶體 

將存放串的首位址送到pc中。 

(3)賦值方式 只能逐個元素賦值 串位址可賦給pc 

(4)輸入方式: 串直接輸入字元陣列 不能將字串直接輸入指標變數 

(5)值的改變: 字元陣列首位址不能改變 指標變數的值可以改變 

由以上區別可以看出,在某些情況下,用指標變數處理字串,要比用陣列處理字串方便

字元型指標變數與字元陣列的區別

1 分配記憶體 設有定義字元型指標變數與字元陣列的語句如下 char pc str 100 則系統將為字元陣列str分配100個位元組的記憶體單元,用於存放100個字元。而系統只為指標變數pc分配4個儲存單元,用於存放乙個記憶體單元的位址。2 初始化賦值含義 字元陣列與字元指標變數的初始化賦值形式相...

字元型指標變數與字元陣列的區別

字元型指標變數與字元陣列的區別 1 分配記憶體 假設有字元型指標變數與字元陣列如下 char p s 10 編譯器為字元陣列s分配 10個位元組記憶體,用於存放 10個字元。而編譯器只為指標變數p分配 4個位元組記憶體。2 初始化賦值含義 字元陣列與字元指標的初始化賦值形式相同,但其含義不同。例如 ...

字元陣列與字元型指標變數

int p 5 由於 的優先順序高。所以p先與 5 結合,p是長度為5的指標陣列,每個元素都為指向指標變數的指標。字元型指標就是儲存字元型資料記憶體單元的位址。字元陣列,是將字串放到為陣列分配的儲存空間去 字元型指標變數,是將字串存放到記憶體,然後將字串的記憶體起始位址送到指標變數中 字元陣列與指標...