告訴瀏覽器要用utf-8來解釋,同時,儲存文件時,編碼格式也要為utf-8格式。"/> 告訴瀏覽器要用utf-8來解釋,同時,儲存文件時,編碼格式也要為utf-8格式。">

首頁  >  文章  >  web前端  >  C中字串的定義方法及說明實例

C中字串的定義方法及說明實例

零下一度
零下一度原創
2017-06-30 16:31:161758瀏覽

在C中定義字串有下列幾種形式:字串常數,char數組,char指標

1.字串常數

   即:位於一對雙括號中的任何字元。雙引號裡的字符加上編譯器自動提供的結束標誌\0字符,作為

一個字串儲存在記憶體中。如:printf("%s","hello"); //"hello"

    如果字串文字中間沒有間隔或間隔的是空格符,ANSI  C 會將其串聯起來。例:

     char greeting[50] = "hello,and" "how are" "you";

   等價於:

     char greeting[50] = " hello,and how are you";

  字串常數屬於靜態儲存類別。靜態儲存是指如果在函數中使用字串常數,即使是多次呼叫了這個函數,

該字串在程式的整個運行過程中只儲存一份。整個引號的內容作為指向該字串儲存位置的指標。這一點與

把數組名當作指向數組儲存位置的指標類似。

2.字串陣列及其初始化

   初始化範例:

      char m[40] = "hello,world";  //定義字串陣列時必須指定數組大小(整數常數),在指定大小時,要確保數組的大小比預定的大一個,因為編譯器會自動添加'\0'。

                                             中//之後符號上的元素上初始化為「#」# . 'l',' \0'};  //注意標誌結束的空字符,若沒有它,得到的只是一個字符數組而不是字符串

3.利用char指針定義字符串

       char * m = "hello,world"; //自動新增'\0'

      注意:此時字串指標m指向字串常數,不成用*(m+1)='o'修改此常數,因為這個字串常數放在常數區不能被修改

4.數組和指標

   數組形式和指標形式有什麼不同呢?

       陣列形式: char m[40] = "hello,world"; 

       指標形式: char *m = "hello,world";

##  

##     編譯器會把陣列名稱m看成是陣列首元素的位址&m[0]的同義詞,m是個位址常數。可以用m+1來識別數組裡的下一個元素,但不能使用++m,增量運算子只能在變數前使用, 而不能在常數前使用。

     m[40]在電腦記憶體中被分配一個有40個元素的數組(其中每個元素對應一個字符,還有一個附加的元素對應結束的空字符'\0')。每個元素都被初始化為對應的字元。

             通常,被引用的字串儲存在執行檔的資料段部分;當程式載入記憶體時,字串也被載入到記憶體中,將被引用的字串複製到陣列中

    指標形式:

     指標形式(*m)也會在靜態儲存區為字串預留空間。此外,一旦程式開始執行,也要為指標變數m另外預留一個儲存位置,以便在該指標變數中能夠儲存字串的位址。

      m指向字串的第一個字符,可用++m指向第二個字符。  指標m是個變數。    

以上是C中字串的定義方法及說明實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn