C語言基礎——字串指標(指向字串的指標)
阿新 • • 發佈:2019-02-16
C語言中沒有類似java,python等面向物件的程式語言中string那樣的特定的字串型別,通常是將字串放在一個字元陣列中。
遍歷字串程式碼:
#include<stdio.h> #include<string.h> void main(){ char str[] = "hello world"; int len = strlen(str),i; for (i = 0; i < len; i++) { printf("%c", str[i]); } printf("\n"); char *p = str; for (i = 0; i < len; i++) { printf("%c", *(p++)); } printf("\n"); for (i = 0; i < len; i++) { printf("%c", *(str+i)); } system("pause"); } 執行結果列印:hello world hello world hello world
字元陣列歸根結底還是一個數組,上圖中定義的字串陣列,str也可以認為是一個指標,指標以及陣列方面操作均適用。
除了字元陣列外,C語言還支援直接使用一個指標指向字串的方式來表示字串,程式碼如下:
char *str = "hello C language";
以此方式定義的字串,同樣可以對此字串進行多樣的操作。為什麼可以用字元陣列表示字串,非要弄個指標來表示字串呢?這其中定有深意。原來它們最根本的區別是在記憶體中的儲存區域不一樣,字元陣列儲存在全域性資料區或棧區,而以指標形式表示的字串卻儲存在常量區。全域性資料區和棧區的字串(也包括其他資料)有讀取和寫入的許可權,而常量區的字串(也包括其他資料)只有讀取許可權,沒有寫入許可權。一句話概括:陣列形字串存放在全域性資料區或棧區,可讀可寫。指標字串存放在常量區,只讀不能寫
程式設計中到底以哪種方式來定義字串則根據實際情況來判斷。