給新手的 C 語言字串指南

來源:互聯網
上載者:User

字串的幾個不同層面的含義

1、源檔案中出現的 "abc" 這樣的字串
這種叫做字串字面常量,只在代碼中有效。這種字面常量具有內部連結性,編譯器會在每個編譯單元內部為這個字串分配空間儲存。因為是常量,它所位於的記憶體空間通常是不可寫的。

2、一個以 '/0' (ASCII NUL字元)結束的字元數組。或者更確切的說,一個包含了各種 ASCII 可列印字元的、以 '/0' 為結束的字元數組。這是 C 語言語義上的字串定義,不涉及編譯、連結的特性,但是 <string.h>和<stdio.h> 標頭檔中的諸多函數都是以次為依據進行處理的。strlen / strcpy / strdup 等函數在進行識別字串的時候,只依照是否出現 '/0' 為判斷條件。在很大程度上來說,所謂 C-style string 的存在,就是通過 <string.h> 和 <stdio.h> 的系列函數體現的。

字元數組,char CHARRAY[arraysize],是一個更低層面上的意義,它表示一塊連續的、包含 char 類型元素的記憶體區間。其中的內容是否是合法的 ASCII 字串,是否以 '/0' 結束,並不影響它作為一個字元數組的本質。當這個數組作為局部變數或者全域變數進行分配的時候,可以使用 sizeof 操作符得到整個數組所佔據的空間。這個值與其中包含的字串的 strlen 不必須相同,通常情況下也是不會相等的。

字元指標,char * p = /*initialization*/,表示一個指向 char 類型元素的指標。對它進行解除引用得到的是單個的 char。由於 C 語言支援指標算術運算(對 char *p 支援 ++p; --p; p + 2 等操作),可以通過一個 char * 方便地訪問連續範圍的字串,因此通常使用 char * 來引用一個邏輯意義上的字串。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.