色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

char *s和char s[]在內存中是怎么存儲的?

學益得智能硬件 ? 來源:學益得智能硬件 ? 2023-02-13 09:45 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

36b159da-a8bf-11ed-bfe3-dac502259ad0.png

這兩行代碼有什么區別? 從語法層面上講,上面的是指針,下面的是數組,但是想要搞清楚他們的區別,還得知道他們在內存中怎么存儲的。

371e73bc-a8bf-11ed-bfe3-dac502259ad0.png

操作系統中,每個進程在啟動的時候都會被分配一塊虛擬地址空間,這塊空間包含數據段、代碼段、堆、棧等等。

char*s="helloworld";
s 屬于棧空間,在 64 位系統中占 8 個字節。

"helloworld" 我們把它稱作字符串常量,存放在只讀數據區。

既然是只讀數據,那么它一定不能修改。

所以這條語句涉及兩塊內存,棧空間的指針指向只讀數據區。

377c58ec-a8bf-11ed-bfe3-dac502259ad0.png ?

s 指向字符h,如果s++,那么就指向字符e。

3795fc0c-a8bf-11ed-bfe3-dac502259ad0.png ?

但是因為"helloworld"是只讀數據,所以 *s 不能修改,比如:
 *s = 'a';
運行會出錯。
char s[] = "helloworld";
s 是一個數組,"helloworld"用于初始化數組。 數組存放在棧空間,算上字符串后面的?,數組占 11 個字節。 既然是棧空間的數據,我們就可以通過數組名去修改,比如:
s[0] = 'a';
就是把字符 h 改成了 a。 但是由于數組名是常指針,表示的是數組首元素的地址,所以數組名不好修改。
s++;
會在編譯的時候直接報錯。 要說他們倆有什么聯系,指針可以用下標去訪問,數組也可以當作指針來使用。
char *s1 = "helloworld";
printf("%c
",s1[1]);


char s2[] = "helloworld";
printf("%c
", *(s2 + 1));



審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 字符串
    +關注

    關注

    1

    文章

    590

    瀏覽量

    22344
  • 虛擬地
    +關注

    關注

    0

    文章

    2

    瀏覽量

    5533

原文標題:char *s 和 char s[] 的區別

文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關注!文章轉載請注明出處。

收藏 0人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    char是什么數據類型

    數據代碼char
    油潑辣子
    發布于 :2023年11月16日 16:58:00

    error: incompatible types when assigning to type ‘char[20]’ from type ‘char **’

    #include#include#if 1char *GetSrand(char s[][20],int len){int a = len;srand(time(0));return s
    發表于 07-07 17:46

    bit和int char基本認識及區別

     bit和int char之類的差不多,只不過char=8位, bit=“1位而已”。都是變量,編譯器在編譯過程中分配地址。除非你指定,否則這個地址是隨機的。這個地址是整個可尋址空間,RAM+FLASH+擴展空間。bit只有0和1兩種值,意義有點像Windows下VC
    發表于 08-06 08:00 ?11次下載
    bit和int <b class='flag-5'>char</b>基本認識及區別

    char *和char數組的區別及內核訪問用戶區

    abcd 和ABCD了,這是為什么?實際上,char *只是一個指,僅僅是一個unsigned long,那么我們看看pa1,內存實際就8個字節(32位機器),兩個指針,一個4個字節,我們傳入send
    發表于 04-02 14:36 ?3275次閱讀

    浮點數在內存存儲

    浮點數在內存存儲和整數不同,因為整數都可以轉換為一一對應的二進制數據。而浮點數的存儲是由符號位 (sign) + 指數位 (exponent) + 小數位 (fraction) 組
    的頭像 發表于 09-20 10:52 ?4405次閱讀
    浮點數<b class='flag-5'>在內存</b><b class='flag-5'>中</b>的<b class='flag-5'>存儲</b>

    char 與unsigned char在嵌入式開發的區別

    嵌入式數據采集的最小單位為8bit或者8bit的倍數,在嵌入式char buf[ ]指的就是字符串,也就是所謂的字符空間,轉換成ascii碼是有符號數unsigned char b
    發表于 11-03 10:06 ?9次下載
    <b class='flag-5'>char</b> 與unsigned <b class='flag-5'>char</b>在嵌入式開發<b class='flag-5'>中</b>的區別

    51單片機 對 char 反序列輸出,以及注意事項

    反序列輸出 意思是 比如數值 0xaa (二進制 1010 1010),輸出為 0x55(二進制 0101 0101).先上函數unsigned char Reverse(unsigned
    發表于 11-23 16:20 ?8次下載
    51單片機 對 <b class='flag-5'>char</b> 反序列輸出,以及注意事項

    MCU_C語言中 數組型指針 的應用 -- char (*stringp)[]

    定義一個指向數組的指針stringpchar (*stringp)[];取得某個數組的地址 :char *dst = &string[10];指針指向該數組的某個位置:stringp = (char (*)[])dst;
    發表于 11-29 18:06 ?2次下載
    MCU_C語言中 數組型指針 的應用 -- <b class='flag-5'>char</b> (*stringp)[]

    字符型char和整型int之間的關系

    )有符號的字符表示-128127,無符號字符表示0255。char相當于signed char還是unsigned char取決于編譯器。字符型數據在內存
    發表于 01-13 15:22 ?1次下載
    字符型<b class='flag-5'>char</b>和整型int之間的關系

    S71200:char和string的定義

    數據類型為 char (Character) 的變量長度為 8 bit 位,占用1個 byte 的內存char 數據類型將單個字符存儲為 ASCII 編碼形式。
    的頭像 發表于 04-01 11:13 ?8878次閱讀

    char和string在西門子PLC的格式

    數據類型為 char (Character) 的變量長度為 8 bit 位,占用1個 byte 的內存char 數據類型將單個字符存儲為 ASCII 編碼形式。
    的頭像 發表于 07-07 17:05 ?1.7w次閱讀

    char和string在西門子PLC的格式

    數據類型為 char (Character) 的變量長度為 8 bit 位,占用1個 byte 的內存char 數據類型將單個字符存儲為 ASCII 編碼形式。
    的頭像 發表于 07-21 09:10 ?1w次閱讀

    收發通信數據時應統一用unsigned char類型

    我看有同事用char類型接收,語法上來說char默認是signed char
    的頭像 發表于 05-25 11:39 ?1508次閱讀

    如何將QString轉成char

    注意的是,如果轉換類型是const char *盡管用data()不會出錯,會給你自動轉換,但是還是不建議,因為深拷貝了一份,理論上增加了內存開銷,如果字符串長度小還好,一旦很長,這個開銷挺大,這是個好的編程
    的頭像 發表于 11-24 15:33 ?1698次閱讀

    oracleto_char用法

    to_char是Oracle數據庫的一個函數,用于將不同類型的數據轉換為字符類型。 to_char函數的基本語法: to_char(表達式,格式模型) 首先,to_
    的頭像 發表于 12-05 16:54 ?3537次閱讀
    主站蜘蛛池模板: 伊人久在线观看视频 | 某上海少妇3P黑人完整版BD | 国产AV精品久久久免费看 | 欧美狂野乱码一二三四区 | 老头xxx | 国产真实强被迫伦姧女在线观看 | 近亲乱中文字幕 | 色婷婷99综合久久久精品 | 亚洲欧美自拍清纯中文字幕 | 蝴蝶中文娱乐 | 亚洲精品高清AV在线播放 | 免费观看久久 | 国产精品一国产AV麻豆 | 国产精品亚洲欧美一区麻豆 | 最新国产精品视频免费看 | 人人做人人干 | 日韩欧美一区二区三区在线 | 日本全彩黄漫无遮挡 | 欧美大香线蕉线伊人久久 | 成人综合在线观看 | 亚洲国产综合久久精品 | 99久久国产露脸精品竹菊传煤 | 蜜芽tv在线观看免费网站 | 91视频3p| 先锋影音av最新资源网 | 妖精视频免费高清观看 | 国产伦精品一区二区三区免费观看 | 办公室韩国电影免费完整版 | 被窝国产理论一二三影院 | 国产91无毒不卡在线观看 | 国产久青青青青在线观看 | 国产精品美女久久久网站动漫 | 人妻熟女斩五十路0930 | 特黄大片aaaaa毛片 | 亚洲国产精品久久人人爱 | 中文字幕在线观看网站 | 在线免费中文字幕 | WWW国产亚洲精品久久麻豆 | 美女大BXXXXN内射 | 国产免费人成在线视频视频 | 我年轻漂亮的继坶2中字在线播放 |

    電子發燒友

    中國電子工程師最喜歡的網站

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