指针--一种类型,指针类型(*);
指针变量--指针只能指向某块地址,不能给一个常量值。
整形指针
int *
//字符串
char *
//浮点型指针
float *
int a = 10;
int *p = &a;(取地址。指针类型和a是一样的
指针在内存占据8个字节,与类型无关
通过指针变量p改变a的值
1.获取变量p的值
2.使用*获取某个地址里面的值。
*p = 20.即可改变源地址@a,里面a的值。
2)获取数组的地址
int array 【5】={1,2,3,4,5}
printf("%p ,array") -----获取首地址
printf("%p,&array[0]")----获取第一个元素的地址
printf("%p ,array[0]")-----无效,因为array [0]是取值1,要用%d.
printf("array + 1 %p ,array+ 1") -----地址+1,地址字节是4,(array + 1 %p ,array+ 1*4字节),所以是地址+字节数
1.常量指针
const int*pA = &a
*pA = 20 ------不能改变指针指向的变量的值
pA = &b -----可以改变指针的指向
2.指针常量
int *const pA = &a;
*pA = 20-----可以改变指针指向的变量的值
pA = &b;-------不能改变指针的指向
3.指向常量的常量指针
const int *const pA-------指针的指向和指向的值都不可以改变。
什么时候需要指针
1.访问函数,在函数内部需要改变外部传入的变量的值
2.函数里面需要得到一个连续存储空间的首地址
3.动态分配内存,需要记录分配的内存的首地址