指针
何为指针?来个官方定义:指针是一个值为内存地址的变量(或数据对象)。
一、指针的声明
//示例 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);
如果函数这样定义,那这个函数将不能改变要传入的数组
原文:https://www.cnblogs.com/Traveler-Wind/p/10278615.html