糯米文學吧

位置:首頁 > 計算機 > C語言

計算機二級C語言字符串的指針以及指向字符串的指針變量

C語言1.67W

  1.用指針方法實現一個字符串的存儲和運算

計算機二級C語言字符串的指針以及指向字符串的指針變量

如:

char * strp=″china″;

此處定義了一個字符指針變量strp,變量中存放的是字符串第一個字符的地址

C語言對字符串常量是按字符數組處理的,它實際上在內存開闢了一個字符數組用來存放字符串變量,並把字符串首地址賦給字符指針變量strp。

在輸出時用

printf(″%s\n″,strp);

通過字符數組名或字符指針變量可以輸出一個字符串。而對一個數值型數組,是不能企圖用數組名輸出它的全部元素的。

  2.字符指針變量與字符數組

雖然用字符數組和字符指針變量都能實現字符串的存儲和運算,但它們二者之間是有區別的,不應混為一談,主要有以下幾點:

(1)字符數組由若干個元素組成,每個元素中放一個字符,而字符指針變量中存放的.是地址(字符串的首地址),決不是將字符串放到字符指針變量中。

(2)對字符數組只能對各個元素賦值,不能用以下辦法對字符數組賦值。

Char str[14];

str=″I love China!″;

而對字符指針變量,可以採用下面方法賦值:

char *a;

a=″I love China!″;

但注意賦給a的不是字符,而是字符串的首地址。

(3)賦初值時,對以下的變量定義和賦初值:

char *a=″I love China!″;

等價於:

char *a;

a=″I love China!″;

而對數組初始化時:

static char str[14]={″I love China!″};

不能等價於

char str[14];

str[]={″I love China!″};

即數組可以在變量定義時整體賦初值,但不能在賦值語句中整體賦值。

(4)在定義一個數組時,在編譯時即已分配內存單元,有確定的地址。而定義一個字符指針變量時,給指針變量分配內存單元,在其中可以放一個地址值,就是説,該指針變量可以指向一個字符型數據,但如果未對它賦予一個地址值,這時該指針變量並未具體指向哪一個字符數據。

(5)指針變量的值是可以改變的。

  3.字符串處理函數

C語言中沒有對字符串進行合併、比較和賦值的運算符,但幾乎所有版本的C語言中都提供了有關的庫函數。例如:

(1)strcat函數:連接兩個字符數組中的字符串

(2)strcpy函數:字符拷貝函數

(3)strcmp函數:字符比較函數

(4)strlen函數:測試字符串長度的函數

(5)strlwr函數:將字符串中大寫字母轉換成小寫字母

(6)strupr函數:將字符中小寫字母轉換成大寫字母