用來存放字元的陣列稱為字元陣列,例如:
char a[10]; //一維字元陣列
char b[5][10]; //二維字元陣列
char c[20]=; // 給部分陣列元素賦值
char d=; //對全體元素賦值時可以省去長度
以下均等效
const u8 text_buffer=;
const char text_buffer1=;
const char text_buffer2="apollo stm32h7 iic test123";
char *a1="234234";
char *a2=;
字元陣列實際上是一系列字元的集合,也就是字串(string)。在c語言中,沒有專門的字串變數,沒有string型別,通常就用乙個字元陣列來存放乙個字串。
c語言規定,可以將字串直接賦值給字元陣列,例如:
char str[30] = ;
char str[30] = "c.biancheng.net"; //這種形式更加簡潔,實際開發中常用
陣列第0個元素為 'c',第1個元素為 '.',第2個元素為 'b',後面的元素以此類推。也可以不指定陣列長度,例如:
char str = ;
char str = "c.biancheng.net"; //這種形式更加簡潔,實際開發中常用
在c語言中,字串總是以'\0'
作為串的結束符。上面的兩個字串,編譯器已經在末尾自動新增了'\0'
。
puts 和 printf 在輸出字串時會逐個掃瞄字元,直到遇見 '\0' 才結束輸出。請看下面的例子:'\0'
是ascii碼表中的第0個字元,用nul
表示,稱為空字元。該字元既不能顯示,也不是控制字元,輸出該字元不會有任何效果,它在c語言中僅作為字串的結束標誌。
#include
int main()
執行結果:
str1:
str2: c language
str3: you are a good
str1 和 str2 很好理解,編譯器會在字串最後自動新增 '\0',並且陣列足夠大,所以會輸出整個字串。對於 str3,由於字串中間存在 '\0',printf() 掃瞄到這裡就認為字串結束了,所以不會輸出後面的內容。
需要注意的是,用字串給字元陣列賦值時由於要新增結束符 '\0',陣列的長度要比字串的長度(字串長度不包括 '\0')大1。例如:
char str = "c program";
該陣列在記憶體中的實際存放情況為:
字串長度為 9,陣列長度為 10。
字串字元陣列的賦值
字元陣列的定義與初始化 char str 10 如果說提供的字元的個數大於陣列的長度,就按語法錯誤處理,如果小於陣列的長度,不夠的位置用空字元補全 0 字元陣列與字串 1 c 語言中將字串當做字元陣列來處理 字串的結束標誌是 0 而前面的所有字元組成字串,不算 0 2 對於字串常量的話,系統會自動在...
C語言,字串的處理,陣列字串,指標字串。
c語言菜鳥教程 void memset void str,int c,size t n 複製字元 c 乙個無符號字元 到引數 str 所指向的字串的前 n 個字元。size t strlen const char str 計算字串 str 的長度,直到空結束字元,但不包括空結束字元。char str...
C語言的字元陣列,字串,字串常量
首先來看一段源 include int main 剩餘部分為 0 char brr 不是字串,因為沒有 0 char crr 10 字元陣列特有 char drr 10 abc 字元陣列特有 char err abc 字元陣列特有 char frr 10 printf s n arr printf ...