C語言之字串與指標

qrshi發表於2015-04-11

轉載自:http://blog.chinaunix.net/uid-26921272-id-3325954.html


C語言之字串與指標

1、  字串的表示形式

C語言中,我們可以用兩種方式訪問字串

(1)       用字元陣列存放一個字串,然後輸出該字串。

main(){

   char string[]="I love China!";

   printf("%s\n", string);

}

(2)       用字元指標指向一個字串。可以不定義字元陣列,而定義一個字元指標。用字元指標指向字串中的字元。

main(){

   char *string="I love China!";

   printf("%s\n", string);

}

    在這裡,我們沒有定義字元陣列,而是在程式中定義了一個字元指標變數string,用字串常量"I love China!",對它進行初始化。C語言對字串常量是按字元陣列處理的,在記憶體中開闢了一個字元陣列用來才存放該字串常量。對字元指標變數初始化,實際上是把字串第1個元素的地址(即存放字串的字元陣列的首元素地址)賦給string有人認為string是一個字串變數,以為在定義時把"I love China!"這幾個字元賦給該字串變數,這是不對的!!

      實際上,char *string="I love China!";等價於:

Char  *string

String = “I love China!”;

    可以看到,string被定義為一個指標變數,指向字元型資料,請注意它只是指向了一個字元變數或其他字元型別資料,不能同時指向多個字元資料,更不是把“I love China!”這些字元存放到string中(指標變數只能存放地址),也不是把字串賦給*string只是把“I love China!”的第一個字元的地址賦給指標變數string

在輸出時,要用:printf(“%s\n”, string);,其中“%s”是輸出字串時所用的格式符,在輸出項中給出字元指標變數名,則系統先輸出它所指向的一個字元資料,然後自動是string1,使之指向下一個字元,然後再輸出一個字元……如此知道遇到字串結束標誌“\0”為止。

注意:可以通過字元陣列名或者字元指標變數輸出一個字串。而對一個數值型陣列,是不能企圖用陣列名輸出它的全部元素的。例如:

Int i[10];

………

Printf”%d\n”, i);

是不行的,只能逐個輸出!!!!!!顯然%s可以對一個字串進行整體的輸入和輸出。

 

2、  字串指標作函式引數

將一個字串從一個函式傳遞到另外一個函式,可以用地址傳遞的方法,即用字元陣列名作引數或用指向字元的指標變數做引數。在被呼叫的函式中可以改變字串內容,在主調函式中可以得到改變了的字串。

 

注意:對於實參和形參的用法,十分靈活,我們可以慢慢去熟悉它,這裡列出一個表格便於大家記憶:

實參

形參

陣列名

陣列名

陣列名

字元指標變數

字元指標變數

字元指標變數

字元指標變數

陣列名



相關文章