指針是C語言的一個特殊的變量,它存儲的數值被解釋成為內存的一個地址。
指針定義的一般形式如下。
數據類型 *指針變量名;
例如:
int i,j,k,*i_ptr; //定義整型變量i,j,k和整型指針變量i_ptr。
指針運算包括以下兩種:
(1)取地址運算符。取地址運算符&是單目運算符,其功能是取變量的地址,例如:
i_ptr=&i; //變量i的地址送給指針變量i_ptr
(2)取內容運算符。取內容運算符“*”是單目運算符,用來表示指針變量所指單元的內容,在星號“*”運算符之后跟的必須是指針變量。例如:
j=*i_ptr; //將i_ptr所指的單元的內容賦給變量j
可以把數組的首地址賦予指向數組的指針變量。例如:
int a[5],*ap;
ap=a; //數組名表示數組的首地址,故可賦予指向數組的指針變量
也可以寫成:
ap=&a[0]; //數組第一個元素的地址也是整個數組的首地址,也可賦予指針變量ap
還可以采用初始化賦值的方法:
int a[5],*ap=a;
也可以把字符串的首地址賦予指向字符類型的指針變量。例如:
unsigned char *cp;
cp="Hello World!";
這里應該說明的是,并不是把整個字符串裝入指針變量,而是把存放該字符串的字符數組的首地址裝入指針變量。
對于指向數組的指針變量,可以進行加減運算,例如:
cp--; //cp指向上一個數組元素
ap++; //ap指向下一個數組元素
例如:定義了指針類型的形式參數如下:
uchar *str;
該形式參數表示一個無符號字符型變量的地址。可以采用以下賦值語句:
SBUF=*(str+k); //將單元地址為str+k的內容賦給專用寄存器SBUF,啟動發送
在調用該函數時,直接把數組trdata[]的數組名作為實際參數代入即可,因為數組名表示數組的首地址,故可直接賦予指向數組的指針變量。
-
C語言
+關注
關注
180文章
7614瀏覽量
137729 -
指針
+關注
關注
1文章
481瀏覽量
70611
發布評論請先 登錄
相關推薦
評論