c/c++ c語言字元與字串

經濟鯊魚發表於2018-01-22

字元與字元編碼

這裡寫圖片描述


  • c語言中一個英文字元我們用一個字元來表示;

這裡寫圖片描述


assic碼錶

這裡寫圖片描述


輸出字元

  • %c告訴我們要把ch裡面的資料當做字元來使用
  • 讀取記憶體資料99–>c

這裡寫圖片描述


這裡寫圖片描述


這裡寫圖片描述


字串

這裡寫圖片描述


結尾字元

  • c語言的字串是以\0 結尾的(二進位制 0,區別與字元0)
    這裡寫圖片描述

這裡寫圖片描述


  • 字串中的每個字元,連續存放在一段記憶體裡面,記憶體裡面存放的是字元所對應的二進位制編碼;
  • 結束後以結尾符號\0–>二進位制資料0結束
  • 字串的記憶體除了存放記憶體資料以外還有一個結尾符號,
  • 所以需要多一個位元組來存放一個字串,存完內容以後,多出來的位元組存放結尾符號;
  • 在做存字串的時候,要保證分配的記憶體,能夠存下字串,字串的位元組+1(結尾符號)
    這裡寫圖片描述

字串的定義

  • 常量字串定義,一旦定義常駐記憶體,不可修改;

    • 全域性的,只讀的,不可修改的,分配在程式碼段上的;
    • "hello",倆個雙引號,中間是內容;
    • 有一個char*的指標變數來指向這個常量字串
    • 指向的是字串記憶體的第一個字元的首地址;
    • 在程式碼段上定義了一個常量字串,並且有一個指標變數指向了這個常量字串的第一個字元開始的位置
    • 輸出一個字串,用%s的格式符號
    • 這裡寫圖片描述

    • 從指標變數的地址開始,一個一個字元的輸出,直到遇到結尾符;

    • 這裡寫圖片描述
    • 如果多個地方使用同一個常量字串,它們是同一塊記憶體;
    • 這裡寫圖片描述
    • 常量字串是定義在程式碼段上的, –》只讀的
    • 使用指標來修改程式碼段上的記憶體,作業系統會丟擲異常
      這裡寫圖片描述

非常量字串

  • 記憶體(全域性,棧,堆),內容,結尾符號;
  • Hello
  • 這裡寫圖片描述
  • 動態記憶體分配;
    • 這裡寫圖片描述
    • 可以使用一個指標變數來儲存字串的起始地址;
    • 內容+ 結尾符號,首地址就能代表這個字串;
  • 怎麼求字串的長度;
    • 什麼是字串的長度,也就是說字串裡面包含的字元的個數;
    • "Hello"-->5個字元,"test"--> 4個字元
    • 字串–>記憶體的地址,存放了字元+結尾符號
    • char* 指標就能表示字串
    • 統計英文字串字元個數,是這樣寫的
    • 中文不一樣;
    • 這裡寫圖片描述
    • 這裡寫圖片描述

  • 把字串,由A拷貝到B;B的記憶體足夠容納A

    • 這裡寫圖片描述
  • 字串比較函式,比較倆個字串是否相等

    • 這裡寫圖片描述

字串操作函式

這裡寫圖片描述


  • strdup()
    • 這裡寫圖片描述
  • strncpy(),strncmp()
    • 這裡寫圖片描述
  • 提示:strcpy,strcmp,strdup,strlen,支援中文的
    • 這裡寫圖片描述
  • 陣列名字,sizeof(陣列名字)返回的是陣列所佔的位元組數;
    • 這裡寫圖片描述
    • -

相關文章