天天看點

C++字元、字元串、字元數組、字元串指針、指針數組系列文章連結前言一、字元指針、字元數組二、字元串指針三、(字元串)指針數組四、常用方法參考

作者:qxl 郵箱: [email protected]

系列文章連結

一、C++ 字元、字元串、字元數組、字元串指針、指針數組

文章目錄

  • 系列文章連結
  • 前言
  • 一、字元指針、字元數組
    • 字元指針
    • 字元數組
  • 二、字元串指針
  • 三、(字元串)指針數組
  • 四、常用方法
  • 參考

前言

為了深入了解C++,并時常回顧學過的知識點,對C++知識點進行記錄總結。

參考1

一、字元指針、字元數組

字元指針

  字元指針的存儲方式:字元指針變量本身是一個變量,用于存放字元/字元串的首位址。字元串本身是存放在以該首位址為首的一塊連續的記憶體空間中,并以’\0’結束。字元和字元串的存儲方式本質上并沒有差別。

存儲順序:1. 配置設定記憶體給字元指針 2. 配置設定記憶體給字元串 3. 将字元串首位址指派給字元指針

在c語言中通過%c和%s來控制是輸出單個字元還是字元串。

字元數組

字元數組域字元指針的存儲方式似乎并沒有實質上的差别。

二、字元串指針

三、(字元串)指針數組

#include <stdio.h>
void main()
{
    char *str[] = {"Hello", "C++", "World"}; //char (*str)[] = ...
    int i;
    for(i=0; i<3; i++)
        printf("%s\n", str[i]);
} 
// str[0]字元串"hello"的首位址,str[0]+1:字元串"hello"第二個字元'e'的位址,str[2]=str+2:第三個字元串"world"的首位址
// str[1]字元串"C++"的首位址
// str[2]字元串"world"的首位址
           

四、常用方法

char *argv:了解為字元串
char **argv:了解為字元串指針
char *argv[]:字元串指針數組
           

常用方法:

int main(int argc, char*argv[])

第一個參數表示傳入的需處理的元素個數,第二個表示傳遞字元串數組位址。

char* a和char a[]

  • 相同點:a 都是指針,隻想char類型
  • 不通點:char a[] 把内容存在stack。char *a則把指針存在stack,把内容存在constants。

char * a[10] 和 char a[10][20]

  • 相同點 : a 都是2級指針, *a 表示一級指針, **a 表示記憶體中存儲的内容。
  • 不同點 : char * a[10], 數組由char * 類型的指針組成; char a [10][20] 表示一位放10個元素, 二維放20個元素, 值存放地是一塊連續的記憶體區域, 沒有指針。

參考

  • [1] C++ 字元、字元串、字元數組、字元串指針、指針數組