歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C語言 字符數組和字符串

C語言 字符數組和字符串

日期:2017/3/1 9:44:16   编辑:Linux編程

字符數組,完整地說叫字符類型的數組,字符數組不一定是字符串。
字符串是最後一個字符為NULL字符的字符數組。字符串一定是字符數組。
字符數組的長度是固定的,其中的任何一個字符都可以為NULL字符。
字符串只能以NULL結尾,其後的字符便不屬於該字符串。
strlen()等字符串函數對字符串完全適用,對不是字符串的字符數組不適用。

下面來看一個例子

#include <stdio.h>
#include <string.h>

int main(void)
{
//這是字符數組賦初值的方法
char cArr[] = {'Q','U','A','N','X','U','E'};
//這是字符串賦初值的方法
char sArr[] = "quanxue";

//用sizeof()求長度
printf("cArr的長度=%d\n", sizeof(cArr)); //長度為7
printf("sArr的長度=%d\n", sizeof(sArr)); //長度為8,最後一位是NULL

//用printf的%s打印內容
printf("cArr的內容=%s\n", cArr); //不能正確顯示
printf("sArr的內容=%s\n", sArr); //可以正確顯示

//用strlen()求長度
printf("cArr的長度=%d\n", strlen(cArr)); //不正確的結果
printf("sArr的長度=%d\n", strlen(sArr)); //NULL不在計算范圍

return 0;
}

從上面的例子,我們可以看出有以下幾點需要注意

一、char sArr[] = "quanxue";這種方式,編譯時會自動在末尾增加一個NULL字符。

二、字符串只能以NULL字符結尾,NULL字符也就是'\0',在ASCII表中排在第一個,用16進制表示為0x00,用10進制表 示為0

三、sizeof()運算符求的是字符數組的長度(字符數組的長度時固定的),而不是字符串長度(字符串長度計算時不包括末 尾的NULL字符)。

四、strlen()函數求的是字符串長度,而不是字符數組。它不適用於字符串以外的類型。

五、char sArr[] = "quanxue";也可以寫成char sArr[8] = "quanxue";(注意:是8而不是7)

字符數組與字符串數組之間的轉化:

字符數組中插入一個NULL字符,NULL字符前面(包括NULL字符)就成了字符串,一般NULL字符插在有效字符的最後

將C語言梳理一下,分布在以下10個章節中:

  1. Linux-C成長之路(一):Linux下C編程概要 http://www.linuxidc.com/Linux/2014-05/101242.htm
  2. Linux-C成長之路(二):基本數據類型 http://www.linuxidc.com/Linux/2014-05/101242p2.htm
  3. Linux-C成長之路(三):基本IO函數操作 http://www.linuxidc.com/Linux/2014-05/101242p3.htm
  4. Linux-C成長之路(四):運算符 http://www.linuxidc.com/Linux/2014-05/101242p4.htm
  5. Linux-C成長之路(五):控制流 http://www.linuxidc.com/Linux/2014-05/101242p5.htm
  6. Linux-C成長之路(六):函數要義 http://www.linuxidc.com/Linux/2014-05/101242p6.htm
  7. Linux-C成長之路(七):數組與指針 http://www.linuxidc.com/Linux/2014-05/101242p7.htm
  8. Linux-C成長之路(八):存儲類,動態內存 http://www.linuxidc.com/Linux/2014-05/101242p8.htm
  9. Linux-C成長之路(九):復合數據類型 http://www.linuxidc.com/Linux/2014-05/101242p9.htm
  10. Linux-C成長之路(十):其他高級議題

C++ Primer Plus 第6版 中文版 清晰有書簽PDF+源代碼 http://www.linuxidc.com/Linux/2014-05/101227.htm

Copyright © Linux教程網 All Rights Reserved