1、比較point,*point,&point三者的區別
對於int * point;
point:是指針變量,其內容是地址量。
*point:是指針變量的目標變量,即指針指向的那個變量,其內容是數據。
&point:是指指針變量本身所占據的存儲地址。
2、指針與數組
用指針和數組名在訪問內存中的數據時,他們的表現形式是等價的,因為他們都是地址量。
數組名表示整個數組的首地址,可以看作是固定地址的指針,不能被賦值。
數組名無須賦初值,而指針在使用前必須賦初值。
3、字符指針和字符串
字符串是壹個字符數組,字符串以‘\0’結束。printf函數的%s格式輸出字符時,是從給定的地址開始,到遇上第壹個‘\0’字符時結束。
對字符指針初始化,是將字符串的首地址賦給指針。
4、指針型函數
所謂指針型函數,即返回值是指針(地址)的函數。
5、多級指針
指向指針的指針(**p)就是二級指針,指向指針的指針的指針(***p)是3級指針。
多級指針類似於間接尋址。
6、指向函數的指針
C語言中的函數名表示函數的首地址,即函數執行的人口地址。
定義形式:[存儲類型][數據類型標示符](*指向函數的指針變量名)();
例子: int(*fun)();//指向函數的指針 , int * fun(); //指針型函數,註意(* fun)括號不能少
7、動態指針
當需要壹大片內存的時候,最好使用動態分配。
使用malloc函數:void * malloc(size_t size)。
例子:
int * pn=malloc(10*sizeof(int));
double *pd=malloc(10*sizeof(double));