c語言指針用法


一、指針

int t 定義整型變量
int *p p為指向整型數據的指針變量
int a[n] 定義整型數組a,它有n個元素
int *p[n] 定義指針數組p,它由n個指向整形數據的指針元素組成
int (*p)[n] p為指向含n個元素的一維數組的指針變量
int f() f為返回整型函數值的函數
int *f() p為返回一個指針的函數,該指針指向整型數據
int (*f)() p為指向函數的指針,該函數返回一個整形值
int **p p是一個指針變量,它指向一個指向整形數據的指針變量

 

二、指針與變量

 

三、指針與數組

指針數組

(1)定義

(2)定義形式:類型名 *數組名[數組長度]

如要將二維數組賦給一指針數組:
int *p[3];
int a[3][4];
for(i=0;i<3;i++)
p[i]=a[i];
這里int *p[3] 表示一個一維數組內存放着三個指針變量,分別是p[0]、p[1]、p[2]
所以要分別賦值。

注:指針數組常適用於指向若干字符串,這樣使字符串處理更加靈活方便

數組指針

(1)定義

(2)定義形式 類型名 (*指針變量名)[數組長度]

如要將二維數組賦給一指針,應這樣賦值:
int a[3][4];
int (*p)[4]; //該語句是定義一個數組指針,指向含4個元素的一維數組。
 p=a;        //將該二維數組的首地址賦給p,也就是a[0]或&a[0][0]
 p++;       //該語句執行過后,也就是p=p+1;p跨過行a[0][]指向了行a[1][]

所以數組指針也稱指向一維數組的指針,亦稱行指針。

注:

四、指針與字符串

(1)char* string;string="I love China!";但不可以char string[14];string="I love China!";

(2)定義字符數組后,在編譯時為它分配內存單元,它有確定的地址;而定義一個字符指針,在使用前必須為其指向具體的地址;

如下面是正確的:

char *s,str[10];s=str;

五、指針與函數

指針函數

(1)定義:指針函數是指函數的返回值類型是一個指針類型,即本質是一個函數

(2)定義形式:數據類型 * 函數名(參數列表)

注:

 

函數指針

(1)定義:指向函數的指針

(2)定義形式:數據類型 (*指針變量名)(參數列表)

注:一般傳輸一函數指針,返回處理后的該指針地址

I,在給函數指針變量賦值時,只需給出函數名而不必給出參數(因為是將函數入口地址賦給函數指針,而不涉及實參與形參的結合的問題),如:

int max(int,int);

int (*p)(int,int);

p=max;

II,用函數指針變量調用函數時,只需將指針名代替函數名即可,括號中需要實參,如

int c;

c=(*p)(a,b);

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM