#include
#include
總結:不管他前面有幾個心
void getdata01(char *p1)
//char *p 形參 行參 元素被呼叫該函式的引數,只不過具有對外屬性而已
printf(「getdata01() begin\n」);
return;
void getdata02(char **p2)//char **p2 行參 p2是變數
printf(「getdata01() begin\n」);
return;
void getdata03(char *******p7)*******p7 行參 p2是變數
printf(「getdata01() begin\n」);
return ;
void main()
int *p1=null;
int **p2=null;
int a=10;
int *p3=null;
int c=0;
a=20;//直接通過變數修改a的值
p3=&a;//將a的位址賦值給p3
p3=30;//間接的修改p3的值
c=*p3;
//將p3的裡面的值,賦值給c;注意不是位址,解釋*p3裡面放著的a的位址,a=20,在將
20賦值給c;
總結:*p的意義,*就像一把鑰匙,根據乙個指標的值,去修改後面的記憶體空間
如while(*p!=』\0』)
*p++ = *p2++;
解釋 p2++是取值,取出來的值賦值給*p++
//練習
void main()
char *p1=null;
//定義乙個char型別的指標變數p1,將p1的值賦值為null;
char *p2=null;
//定義乙個char型別的指標變數p2,將p2的值賦值為null;
char buf1[100]=;
//定義乙個char型別的陣列為buff1,其中的buf1的元素個數是100個
char buf2[100]=;
//定義乙個char型別的陣列為buff2,其中的buf2的元素個數是100個
strcpy(buf,」abcdefg」)
p1=buf1;
//將buf1的首位址賦值給p1
p2=buf2;
//將buf2的首位址賦值給p2
while(*p1 !=』\0』)
*p2=*p1;
//*放在左邊是賦值
//*放在右邊是取裡面的值
p2++;//向後移動乙個位元組,如果是int型別的話就移動4個位元組
p1++;
重點問一下你是怎麼理解下面的指標的
1、對引數的指標型別應該怎麼理解
a) 理解角度需要從兩個角度出發
i. 佔在c/c++編譯器的角度對型參,如果是指標型別,c編譯器只會分配4個位元組
ii. char *p形參 p是變數
2、指標的資料型別到底是什麼
a) 指標的資料型別是值它所指的記憶體空間的資料型別
i. 指標的資料型別具有依附特性
結論:指標的補長,根據所指記憶體空間型別來定
void senddata01(char *p1); void senddata01(char* p1);
void senddata02(char ** p1); void senddata02(char * *p1); void senddata02(char **p1);
void senddata03(char ***p1);
void senddata04(char *p); void senddata04(char * p); void senddata04(char *p );
void senddata05(char (*p)[10]); void senddata05(char (*p) [10]);
void senddata05(char *****p4);
一級指標二級指標
例如 int p null int代表指標p指向的資料型別是int型,代表這是乙個指標變數,1 指標變數儲存的內容是指向的變數的位址 2 在使用sizeof判斷指標的位元組數時,在32位機器上為4個位元組,在64位機器上為了相容,仍然是四個位元組大小 3 小知識點,不同型別的指標除了指向的變數資料型...
一級指標陣列
示例1 include intmain void 定義了乙個長度為5的物理空間陣列 每個長度為1的空間都有自己獨有的實體地址十六進製制 a 3 3 a printf p n a 1 此時輸出的為 實體地址 即a 2 printf p n a 2 printf d n a 3 a 3等價於 a 0 3...
一級指標與二級指標
如下圖所示,整型指標xptr指向變數x的位址。原始碼 include int main 實現方法一如下圖所示,先為二級整型指標ptr分配空間,然後賦值。原始碼 include include int main printf n return 0 執行結果 實現方法二 如下圖所示,先為二級整型指標pt...