指針 何為指針?來個官方定義:指針是一個值為記憶體地址的變數(或數據對象)。 一、指針的聲明 註意,指針的值雖然是地址,指針本身也是有自己的地址和大小的。在電腦中,指針的大小為8位元組,在stm32中,為4位元組。 二、指針的賦值與解引用 賦值要符合指針的定義,要向指針賦一個地址 三、指針的操作 取址操 ...
指針
何為指針?來個官方定義:指針是一個值為記憶體地址的變數(或數據對象)。
一、指針的聲明
//示例 int *pi; //pi是指向int類型變數的指針 char *pc; // pi是指向char類型變數的指針 float *pf; // pi是指向float類型變數的指針
註意,指針的值雖然是地址,指針本身也是有自己的地址和大小的。在電腦中,指針的大小為8位元組,在stm32中,為4位元組。
二、指針的賦值與解引用
int num=2; int *p; p=# printf("%d",*p);//結果輸出為2
賦值要符合指針的定義,要向指針賦一個地址
三、指針的操作
int arr[5]={1,2,3,4,5};//數組名本身為一個指針
取址操作: &arr
自加自減,與整數相加減: arr++; arr--; arr+=2;
在本例中,指針與整數相加減時,它所指向的地址增加或減少整數個int的大小,如arr+=2儲存ar[2]的地址
指針求差:相同類型指針之間可以相減,差值為整數個指針類型大小
四、指針與const
使用const可以保護數組的數據不被修改,相比於#define,const的用法更加靈活
const int days[3]={20,13,5};
此後數組的元素不能被修改,否則會報錯
使用const的指針不能用於改變值
double rates[5]={20.3,465.2,23.9,45.6,28.6}; const double *pd=rates;
之後便不能通過指針pd改變數組元素的值,但因為數組沒有用const定義,所以可以用rates改變元素。
void show_arr (const double *p,int n);
如果函數這樣定義,那這個函數將不能改變要傳入的數組