首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言基礎

C語言字符數組與字符串:定義、初始化、結束符 \0 與輸出機制

     編輯:C 語言基礎

字符數組 = 字符串存儲容器

C 語言無專門字符串類型,用字符數組存儲字符串:

char a[10];           // 一維字符數組
char b[5][10];        // 二維字符數組(字符串數組)
char c[20] = {'c',' ','p','r','o','g','r','a','m'};
char d[] = {'c',' ','p','r','o','g','r','a','m'};

字符串字面量初始化(推薦)

char str[30] = {"c.biancheng.net"};  // 含大括號
char str[30] = "c.biancheng.net";    // 簡潔形式(常用)
char str[] = "c.biancheng.net";      // 長度自動推導

關鍵規則:\0 結束符

  • C 語言字符串必須以 \0 結束
  • 雙引號字面量編譯器自動在末尾添加 \0
  • \0 = ASCII 0 (NUL),不可顯示,非控制字符,僅作結束標誌

內存佈局示例

char str[] = "C program";
下標0123456789
字符C program\0

字符串長度 = 9,數組長度 = 10(含 \0)。數組長度 ≥ 字符串長度 + 1。

\0 導致的輸出截斷

char str3[30] = "You are a good\0 boy!";
printf("%s\n", str3);  // 輸出 "You are a good"

printf("%s") / puts 掃描到 \0 即停止,後續內容不輸出。

運行結果演示

#include <stdio.h>
int main() {
    char str1[30] = "https://c.biancheng.net";
    char str2[] = "C Language";
    char str3[30] = "You are a good\0 boy!";
    printf("str1: %s\n", str1);
    printf("str2: %s\n", str2);
    printf("str3: %s\n", str3);
    return 0;
}
str1: https://c.biancheng.net
str2: C Language
str3: You are a good

部分初始化與隱式 \0

char str[10] = {'H', 'i'};  // 實際內存:'H','i','\0',0,0,0,0,0,0,0
    部分初始化時,未初始化元素自動填 0(即 \0),因此仍是合法字符串。

字符數組 vs 基本類型變量

深入理解指針後,這區別會更清晰:數組名是常量指針,指向數組首元素。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
特性基本類型 (int/float/char)字符數組 / 數組
變量值數據本身首地址(指針)
數據存儲變量自身內存其他連續內存區
賦值語義拷貝數值不可整體賦值(需逐元素/strcpy)