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

C語言字元陣列長度計算:轉義字元的影響

     編輯:C 語言問答

含轉義序列的字串字面值長度分析

給定宣告:

char a[] = "ab\0123\\098";

編譯器會在編譯期解析轉義序列,實際儲存於陣列的內容如下:

原始碼片段解析結果佔用位元組
a'a'1
b'b'1
\012八進位 012 = 十進位 10 (換行符 LF)1
3'3'1
\\反斜線 '\'1
0'0'1
9'9'1
8'8'1
隱含結尾'\0'1

結論

陣列 a 總長度為 9 位元組(8 個有效字元 + 1 個結尾空字元)。

驗證程式:

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

int main()
{
    char a[] = "ab\0123\\098";
    printf("sizeof(a) = %zu\n", sizeof(a)); // 輸出 9
    printf("strlen(a) = %zu\n", strlen(a)); // 輸出 8 (不含 \0)
    return 0;
}

關鍵提醒

  • 八進位轉義最多 3 位數字(\012),後續數字 3 為普通字元。
  • \\ 代表單一反斜線字元。
  • 字串字面值自動附加 \0,sizeof 會包含它,strlen 則不包含。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved