1. 程式人生 > >C語言基礎——字串指標(指向字串的指標)

C語言基礎——字串指標(指向字串的指標)

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";

以此方式定義的字串,同樣可以對此字串進行多樣的操作。為什麼可以用字元陣列表示字串,非要弄個指標來表示字串呢?這其中定有深意。原來它們最根本的區別是在記憶體中的儲存區域不一樣,字元陣列儲存在全域性資料區或棧區,而以指標形式表示的字串卻儲存在常量區。全域性資料區和棧區的字串(也包括其他資料)有讀取和寫入的許可權,而常量區的字串(也包括其他資料)只有讀取許可權,沒有寫入許可權。一句話概括:陣列形字串存放在全域性資料區或棧區,可讀可寫。指標字串存放在常量區,只讀不能寫

程式設計中到底以哪種方式來定義字串則根據實際情況來判斷。