指標總可以通過新增來進行解引用。
指標與陣列是相通的。在分析變數資料型別的時候,可以通過相通性來理解:
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...