歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C常見問題之字符串的數組形式與指針形式的區別

C常見問題之字符串的數組形式與指針形式的區別

日期:2017/3/1 9:52:08   编辑:Linux編程

由雙引號括起來的字符串常量屬於靜態存儲類型,它被存儲在內存的靜態存儲區內,所以無論字符串常量出現在程序的什麼地方,它在程序的整個運行過程中只存儲一份。

如果用字符串常量初始化字符數組,就是從靜態存儲區把整個字符串復制給數組。例如:

char a[] = "hello";

如果用字符串常量初始化字符指針,就是把字符串在靜態存儲區的地址復制給指針。例如:

char *p = "world";

這兩種形式的一個重要區別是不能通過指針來修改字符串的值,但是字符數組不存在這個問題,如下語句是錯誤的:

p[0] = 'p';

而如下語句沒有問題:

為了避免通過指針修改字符串的錯誤,建議將字符指針聲明為const類型,如下所示:

const char *p = "world";

Copyright © Linux教程網 All Rights Reserved