復(fù)雜類型確認:
1.int * p[10]:數(shù)組,元素為10個指針(右結(jié)合)
2.int (*p)[10]:指針,指針的類型是int [10],是一個數(shù)組。
不同于指向數(shù)組首元素,而是指向整個數(shù)組,p+1為+40(byte)
3.int * * p:指針,指向指針的指針。二級指針可以用來改變指針的指向。
4.int * p(int):函數(shù),返回值是一個指向整型的指針
5.int (*p)(int):指針,指向一個函數(shù)
const關(guān)鍵字:
可用于修飾指針變量
1.const出現(xiàn)在*之前:p指向的地址可以改變,*p不可以被改變。
2.const出現(xiàn)在*之后:p指向的地址不可以改變,*p可以改變
注意:const char * const p,為*p和p都不可改變。
指針和字符串的關(guān)系:
1.用指針來遍歷字符串的所有字符
1) char ch[20];
char *p = ch;
for(;p!=‘\0’;p++){
}
2)char *p = “qianfeng”
注意:1)和2)的區(qū)別在于。z
返回指針的函數(shù):
char * ch(){
return “qianfeng”
}
指向函數(shù)的指針(指向函數(shù)名:函數(shù)的入口地址):
1.函數(shù)的地址就是函數(shù)名
int sum(int a,int b);
定義一個指向函數(shù)的指針變量p
被p指向的函數(shù):返回值int類型,接受兩個int類型的參數(shù)
int (*p)(int,int) = sum;
2.利用指針變量p間接調(diào)用sum函數(shù):
1)? (*p)(5,6);
2)? p(5,6);
3.為什么要讓指針指向函數(shù)
1)可以將這個函數(shù)作為參數(shù)進行傳參