char char 和char 的使用

2021-10-07 19:42:07 字數 3236 閱讀 3417

指標總可以通過新增來進行解引用。

指標與陣列是相通的。在分析變數資料型別的時候,可以通過相通性來理解:

char *str ------------> char  ch;    指標可以去掉*,新增;--->所以,指標可以賦值為陣列名;

char  ch------------> char *str ;   陣列名去掉,新增*;-------->所以,陣列名是個位址。

//char*對應char變數的位址外,還 //一重指標對應的是一維陣列

char str = "hello";                   

char* ch = str;         //ch等同於str

printf(" %s",ch);

char**對應char* 變數的位址外,還//二重指標對應的是指標陣列,而不是二維陣列。

char *str = ;         

char **ch = str ;                 //ch等同於str

小結:

char** ch ,通過新增乙個解引用,去掉乙個*,---------------->char *str;--------->str顯示為字串

char *str,通過新增乙個解引用,去掉乙個*,--------------->char st;--------->st 顯示為字元。

ps:通過這種方式可以檢視變數的資料型別。

以上也可以寫成:

char  str[6] =;

方法一:使用陣列指標指向二維陣列:char (*ch)[6] = str;//陣列指標對應的才是二維陣列

方法二:使用指標陣列分別指向二維陣列中的各個一維陣列:

char  *ch[2];

ch[0] = str[0];

ch[1] = str[1];

總的思路:通過一步一步替換的方法,還原到最終的結果。

1)char*** 對應char**的位址;   //char***對應二重指標的位址

char *str = ;

char **data = str; //data與str等同

char ***mm = &data; //mm[0]等同於data

分析:char ***mm = &data;    所以mm[0]等同於data;

char **data = str;     data等同於str;所以,str等同於mm[0]

char *str = ;     所以,str[0]等同於 mm[0][0];str[1]等同於mm[0][1];

2)char*** 對應 char** ch;//char***對應二重指標陣列

//因為char** 指向的是char* ch;

char *str1 = ;

char *str2 = ;

char **ch=; //str1等同於ch[0],str2等同於ch[1]

printf("%s\n",ch[0][0]);

printf("%s\n",ch[0][1]);

printf("%s\n",ch[1][0]);

printf("%s\n",ch[1][1]);

printf("**************************\n");

char ***str = ch; //str與ch等同

分析: 

a)  char **ch=;  所以,ch[0]等同於str1;ch[1]等同於str2;

char *str1 = ;   所以str1[0]等同於ch[0][0],str1[1]等同於ch[0][1]

char *str2 = ;  所以str1[0]等同於ch[1][0],str1[1]等同於ch[1][1]

b)char ***str = ch;   所以,str等同於ch .str[0]等同於ch[0],等同於str1;   str[1]等同於ch[1],等同於str2

str[0][0] 等同於ch[0][0],等同於str1[0];str[0][1] 等同於ch[0][1],等同於str1[1]

str[1][0] 等同於ch[1][0],等同於str2[1];str[1][1] 等同於ch[1][1],等同於str2[1]

小結: 

char*** str  通過乙個解引用,可以去掉乙個* ------------------>char **ch--->ch為乙個二重指標

char **ch 再通過乙個解引用,又去掉乙個* ------------------->char  *c   ---->所以c是字串型別。

ps:通過這種方式可以檢視變數的資料型別。

指標陣列

指標char* str

char ch

str = ch;

char cc;

str = &cc

char **str

char *ch

str = ch;

char *cc;

str = &cc;

char ***str

char  **ch

str = ch;

char **cc;

str = &cc;

多維指標與通過新增乙個解引用的值相對應

多維指標與低維指標取位址相對應

char 和char 的區別

1 char是乙個陣列定義,char 是指標定義 也稱char為靜態陣列,char 為動態陣列 2 指標和陣列的區別 1 指標和陣列的分配 陣列是開闢一塊連續的記憶體空間,陣列本身的識別符號 也就是通常所說的陣列名 代表整個陣列,可以使用sizeof來獲得陣列所佔據記憶體空間的大小 注意,不是陣列元...

char 和char 的區別

char c abc c 0 t char c1 def c1 0 t err 首先c1是乙個指標,它只是指向 def 這個記憶體塊。而 abc 是乙個常量區,不可以對其進行更改。而c定義的是乙個陣列,在分配記憶體時,會自動給它分配四個位元組的位址,並且會進行乙份拷貝工作,此時分配是在棧區進行的,是...

char 和char 的區別

之前在用到char 和char,用到srtncat,讓char對char 進行新增時執行會崩潰,之後做了一些分析和練習,對char 和char有了更深的理解。下面附上一些測試資料。include include include using namespace std int main cout do...