用处:
访问函数在函数内部需要改变外部传入的变量值
函数里面需要得到一个连续存储空间的首地址
动态分配内存,需要记录分配内存的首地址
1.指针类型:
int * 整形指针
char* 字符串
float* 浮点指针
指针变量在64位机内存里占8个字节。
2.指针只能指向某一块地址,不能给常量值
int* p = 10;错误;
int a = 10; int * p =& a;正确;
*p=20; 改变了a 的值(p=a的地址,*取地址里的值)
3.指针和数组的关系:
int array[5] = {};
array = &array[0], array+1 = &array[1]...数组名为数组首地址,地址加1相当于地址加上一个元素占据的字节。
array[0] = *(array +0), array[1] = *(array +1)...
4.常量指针 不可以改变指向变量的值,但是可以改变指向
int a =10; int b = 20;
const int * pa = &a;
*pa = 20;X
pa = &b;
5.指针常量 可以改变指向变量的值,但是不可以改变指向
int a =10; int b = 20;
int *const pa = &a;
*pa = 20;
pa = &b;X
6.指向常量的常量指针 不可以改变指向变量的值,不可以改变指向
const int *const pa = &a;
7.函数指针
int add (int a,int b){
}
int (*pfunction)(int,int) = add; //函数指针
int result = pfunction(3,4);
pfunction = aadd; //指向另一个函数