作者: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++ 字元、字元串、字元數組、字元串指針、指針數組