0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

字符數(shù)組和字符串有沒有區(qū)別?

學(xué)益得智能硬件 ? 來源:學(xué)益得智能硬件 ? 2023-11-30 16:39 ? 次閱讀

字符數(shù)組和字符串有沒有區(qū)別?

最近有同學(xué)做筆試題的時候,遇到了這么一個問答題。

絕大多數(shù)人會把字符數(shù)組和字符串當(dāng)作一個概念,因為在C語言中沒有string這種類型,所以我們一般用字符數(shù)組來表示字符串。

要說他們的區(qū)別,我覺得主要就是 ? 的問題。

定義字符數(shù)組,我們一般這樣寫:

chararray[]={'h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd'};;

但是這種寫法存在很嚴(yán)重的問題,如果用 strlen 計算數(shù)組的長度或者用 printf 的 %s 格式來輸出,那程序很容易奔潰。

因為數(shù)組里面只有 helloworld, 占10個字節(jié),它達(dá)不到字符串的標(biāo)準(zhǔn)。

C語言中的字符串必須以 ? 結(jié)尾,不管是 printf 還是 strlen 這些字符串處理函數(shù),都是把 ? 作為字符串的結(jié)束標(biāo)志。

想要計算這個數(shù)組的長度,只能用 sizeof 關(guān)鍵字,得到數(shù)組實(shí)際占用內(nèi)存的大小。

這個代碼要想修改,有兩種方法。

第一種把數(shù)組的容量改的大一些,程序就能正常運(yùn)行。

char array[20] = {'h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd'};;

這種寫法,helloworld 的后面全是 ?。

此時的字符數(shù)組就是一個完整的字符串。

第二種在最后一個字符的后面手動加上一個 ?,也能達(dá)到相同的效果。

chararray[]={'h','e','l','l','o','w','o','r','l','d','?'};

當(dāng)然這種寫法太麻煩,我們一般直接寫成這樣。

char array[] = "helloworld";

這個地方的 helloworld 就是一個標(biāo)準(zhǔn)的字符串,存儲的時候編譯器會把最后的 ? 一同加入到數(shù)組中。

這種寫法推薦大家在寫代碼的時候使用。

有時候我們還會聽到一個概念,字符串?dāng)?shù)組,比如寫成這樣的:

chararray[]={"helloworld","123456"};

這個就比剛才的代碼麻煩的多。

問大家一個問題,此時的數(shù)組array在內(nèi)存中占幾個字節(jié)?

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    3115

    瀏覽量

    75073
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7630

    瀏覽量

    140769
  • 字符串
    +關(guān)注

    關(guān)注

    1

    文章

    589

    瀏覽量

    21185
  • 數(shù)組
    +關(guān)注

    關(guān)注

    1

    文章

    419

    瀏覽量

    26424

原文標(biāo)題:字符數(shù)組和字符串是不是一回事

文章出處:【微信號:學(xué)益得智能硬件,微信公眾號:學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 0人收藏

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    數(shù)組、向量和字符串 實(shí)驗

    實(shí)驗 5 數(shù)組、向量和字符串一、實(shí)驗?zāi)康?1. 掌握J(rèn)ava中的數(shù)組定義、引用2. 掌握向量的基本概念和應(yīng)用技術(shù)3. 掌握使用字符串String類
    發(fā)表于 09-23 19:00 ?1607次閱讀

    C語言字符串轉(zhuǎn)數(shù)字實(shí)現(xiàn)方法

    在C/C++語言中沒有專門的字符串變量,通常用字符數(shù)組來存放字符串。字符串是以“\0”作為結(jié)束符
    發(fā)表于 11-14 17:50 ?1.4w次閱讀

    C語言的字符串處理函數(shù)

    指針是神奇的,指向整型的指針int *p1,可以操作整型數(shù)組int a[];指向字符型的指針char *p2,可以操作字符數(shù)組字符串)ch
    發(fā)表于 07-24 17:37 ?4次下載
    C語言的<b class='flag-5'>字符串</b>處理函數(shù)

    電子表格字符串數(shù)組轉(zhuǎn)換和改良LabVIEW資料免費(fèi)下載

    由于labiview自帶的電子表格字符串數(shù)組轉(zhuǎn)換子VI存在輸出的數(shù)組會被字符串的單個回車影響,這會導(dǎo)致單元格中帶有回車的數(shù)組轉(zhuǎn)到
    發(fā)表于 07-03 08:00 ?12次下載
    電子表格<b class='flag-5'>字符串</b>至<b class='flag-5'>數(shù)組</b>轉(zhuǎn)換和改良LabVIEW資料免費(fèi)下載

    用指針實(shí)現(xiàn)字符串拷貝的程序和字符型指針變量與字符數(shù)組區(qū)別說明

    字符串是存放在字符數(shù)組中的,對字符數(shù)組中的字符逐個處理時,前面介紹的指針與
    發(fā)表于 11-05 16:15 ?2次下載
    用指針實(shí)現(xiàn)<b class='flag-5'>字符串</b>拷貝的程序和<b class='flag-5'>字符</b>型指針變量與<b class='flag-5'>字符</b><b class='flag-5'>數(shù)組</b>的<b class='flag-5'>區(qū)別</b>說明

    什么是復(fù)制字符串?Python如何復(fù)制字符串

    。 在上一篇文章《你真的知道Python的字符串怎么用嗎?》里,我突發(fā)奇想,將字符串跟列表做了比較,然后發(fā)現(xiàn)字符串竟然沒有復(fù)制的方法。當(dāng)時沒有
    發(fā)表于 11-25 10:32 ?3177次閱讀

    字符串函數(shù)重寫練習(xí)

    字符串函數(shù)重寫練習(xí):字符串比較、字符串拼接、字符串查找、字符串拷貝、內(nèi)存比較、內(nèi)存拷貝、內(nèi)存初始化、內(nèi)存比較、二維
    的頭像 發(fā)表于 05-05 15:02 ?2202次閱讀

    C語言字符數(shù)組字符串有什么區(qū)別

    用來存放字符數(shù)組稱為字符數(shù)組字符數(shù)組的各個元素依次存放
    的頭像 發(fā)表于 02-17 14:27 ?4373次閱讀

    簡述數(shù)組字符串組的使用

    在Python中我們通常也會用到數(shù)組字符串組并且能快速方便的構(gòu)建出來,那么在java構(gòu)建數(shù)組是否是類似的呢?
    的頭像 發(fā)表于 02-23 11:09 ?695次閱讀
    簡述<b class='flag-5'>數(shù)組</b>及<b class='flag-5'>字符串</b>組的使用

    C語言字符串的引用方式

    在C語言程序中,字符串是存放在字符數(shù)組中的。 2. 用字符數(shù)組存放一個字符串,可以通過
    的頭像 發(fā)表于 03-10 14:57 ?2275次閱讀

    c語言字符串定義

    C語言是一種強(qiáng)大而廣泛使用的編程語言,字符串是其中一個非常重要的概念。在C語言中,字符串是由一系列字符組成的數(shù)組,它可以表示文本、數(shù)字等各種類型的數(shù)據(jù)。在本文中,我們將詳盡、詳實(shí)、細(xì)致
    的頭像 發(fā)表于 11-24 10:02 ?2566次閱讀

    C語言字符串編譯函數(shù)介紹

    在C語言中,字符串實(shí)際上是使用null字符O'終止的一維字符數(shù)組。因此,一個以null結(jié)尾的字符串,包含了組成
    的頭像 發(fā)表于 03-07 16:18 ?682次閱讀
    C語言<b class='flag-5'>字符串</b>編譯函數(shù)介紹

    labview字符串如何轉(zhuǎn)換為16進(jìn)制字符串

    Instrument)以及利用第三方工具。 1. 使用內(nèi)置函數(shù) LabVIEW提供了一些內(nèi)置函數(shù),可以直接將字符串轉(zhuǎn)換為16進(jìn)制字符串。這些函數(shù)通常位于“編程”->“字符串”->“轉(zhuǎn)換”菜單下。 1.1
    的頭像 發(fā)表于 09-04 15:54 ?4922次閱讀

    labview字符串數(shù)組轉(zhuǎn)化為數(shù)值數(shù)組

    在LabVIEW中,將字符串數(shù)組轉(zhuǎn)換為數(shù)值數(shù)組是一項常見的任務(wù),尤其是在處理數(shù)據(jù)采集、信號處理或用戶輸入時。 1. 理解LabVIEW的數(shù)據(jù)類型 在開始之前,了解LabVIEW中的數(shù)據(jù)類型是非
    的頭像 發(fā)表于 09-04 17:47 ?5172次閱讀

    字符串字符數(shù)組區(qū)別

    在編程語言中,字符串字符數(shù)組是兩種基本的數(shù)據(jù)結(jié)構(gòu),它們都用于存儲和處理文本數(shù)據(jù)。盡管它們在功能上有一定的重疊,但在內(nèi)部表示、操作方式和使用場景上存在顯著差異。 1. 內(nèi)部表示 字符串
    的頭像 發(fā)表于 01-07 15:29 ?1054次閱讀

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學(xué)習(xí)
    • 獲取您個性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品