(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的指標陣列,每個元素都為指向指標變數的指標。字元型指標就是儲存字元型資料記憶體單元的位址。字元陣列,是將字串放到為陣列分配的儲存空間去 字元型指標變數,是將字串存放到記憶體,然後將字串的記憶體起始位址送到指標變數中 字元陣列與指標...